2014-11-21 70 views
0

我需要匿名創建模型。 我的模型是如何更改獲取結果的ID。覆蓋獲取,篩選並保存

class Laddu(models.Model): 
    owner = models.ForeignKey(User) 
    url = models.TextField() 

我需要讓匿名在這樣一種方式,

Laddu.save(owner=<owner with pk = 1>, url = "google.com") 

實際上將節省

n = anonimusAlgo(1) 
Laddu.save(owner=<owner with pk = n>, url = "google.com") 

,並因此對獲取和篩選

是有沒有更好的方法讓模型匿名?

所以最終的結果是即使有人入侵數據庫,他也無法獲得正確的數據。

+1

我不知道我明白你想要做什麼或爲什麼你想要做它。 – IanAuld 2014-11-21 06:04:35

+0

所以你想隨機保存你的Laddu給所有者? 通過一些算法生成n,如果n是Owner表中的主鍵,則將Laddu保存到該所有者的權利? – 2014-11-21 06:22:02

回答

0

如果我理解正確,您正在尋找一種方法將您的Laddu模型鏈接到用戶模型,例如,如果有人將他的手放在兩張桌子上,他/她將無法知道哪個Laddu對象與哪個User對象有關。

如果是這樣的話,而不是場:
所有者= models.ForeignKey(用戶)

你需要有一個CharField,這將是用戶PK的「加密」的版本,東西像

owner_pk = models.CharField() 

,然後你要訪問的用戶每次需要:

user = User.objects.get(pk=decrypt(laddu_obj.owner_pk)) 

硒e這個答案得到如何生成整數PK的隨機密鑰的想法: What is the best way to get a semi long unique id (non sequential) key for Database objects