【发布时间】:2017-11-12 02:42:03
【问题描述】:
我对 Django 模型设计比较陌生,现在我想做这样的事情。
假设 Alice 有三只狗,分别是 Road-runner、Pinky 和 Kiwi。 Bob 有一只名叫 Spinner 的猫,并且还和 Alice 一起拥有了 Pinky。
所以对象 Pet 的名称不是唯一的。一只宠物可以拥有多个主人。我认为这是多对多的关系。
现在在我看来,我想列出自己的宠物。我该如何实施?我知道这与用户身份验证和外键等有关,如果有人能指出一些方向或清晰的解释,那就太好了。
我现在有:
class Pet(models.Model):
name = models.CharField(max_length=100)
class Owner(models.Model):
pet = models.ForeignKey(Pet, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
我应该把owner = models.ForeignKey(Owner, on_delete=models.CASCADE) 放在 Pet 对象中吗?如果网站都是关于宠物的,而主人只是宠物的附加信息。
直觉上,我倾向于将owner = models.ForeignKey(Owner, on_delete=models.CASCADE) 放在 Pet 对象中是正确的方法。
然后如何将用户限制在自己的对象上?如果宠物被重命名,它必须被它的主人信息过滤掉,这样我们就不会重命名别人的宠物。
感谢您的宝贵时间。
编辑:
class Pet(models.Model):
name = models.CharField(max_length=100)
class Owner(models.Model):
pet = models.ManyToManyField(Pet)
name = models.CharField(max_length=100)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
【问题讨论】:
标签: django model-view-controller django-models model