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

时间:2010-02-19 16:21: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'),)

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

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

    class Meta:
        unique_together = (('account', 'username'),)

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

3 个答案:

答案 0 :(得分:11)

这将是

unique_together = (('account', 'user__username'),)

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

答案 1 :(得分:6)

我不相信你可以使用django核心做你想做的事情。正如所指出的那样{DBD}强制执行in this answer to a related question unique_together。如果检查由django模型继承创建的数据库表,您将看到数据库无法完成此任务。

查看一些替代解决方案的相关问题。

答案 2 :(得分:0)

您缺少的是基类中的abstract = True。这将创建一个包含子类所有字段的表。