如何更改get请求的ID。覆盖获取,过滤和保存

时间:2014-11-21 05:49:33

标签: python django django-models

我需要匿名制作模型。 我的模特是

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 个答案:

答案 0 :(得分:0)

如果我理解正确您正在寻找一种方法将您的Laddu模型链接到用户模型,那么如果有人将他的手放在两个桌子上,他/她将无法知道哪个Laddu对象是与哪个User对象有关。

如果是这种情况,而不是字段:
    owner = models.ForeignKey(User)

你需要有一个CharField,它将是用户PK的“加密”版本,类似

owner_pk = models.CharField()

然后每次您想要访问您需要的用户:

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

请参阅此答案以了解如何为整数PK生成随机密钥: What is the best way to get a semi long unique id (non sequential) key for Database objects