Django unique_together在父类属性的子类模型上?

oro*_*aki 12 django django-models

在这:

class Administrator(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    account = models.ForeignKey(Account)

    class Meta:
        unique_together = (('account', 'self.user.username'),)
Run Code Online (Sandbox Code Playgroud)

self.user.username部分显然是不正确的.但是,在这:

class Administrator(User):
    account = models.ForeignKey(Account)

    class Meta:
        unique_together = (('account', 'username'),)
Run Code Online (Sandbox Code Playgroud)

那是因为我从User继承了吗?(我还不能测试它,因为其他地方有太多元素不合适).我可以使用第一个版本'user.username'吗?或者,我应该使用第二个版本?

Tom*_*Tom 12

这将是

unique_together = (('account', 'user__username'),)
Run Code Online (Sandbox Code Playgroud)

如果我明白你想要做什么.请注意双下划线.这就是你如何看待外键对象的属性.


Mik*_*gel 6

我不相信你可以使用django核心做你想做的事情.正如在相关问题的答案中所指出的,unique_together在DB层强制执行.如果检查由django模型继承创建的数据库表,您将看到数据库无法完成此操作.

针对一些替代解决方案,请查看相关问题.