2014-11-21 35 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