在这:
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'
的第一个版本吗?或者,我应该使用第二个版本?
这将是
unique_together = (('account', 'user__username'),)
如果我明白你想要做什么。请注意双下划线。这就是你如何看待外键对象的属性。
我不相信你可以使用django核心做你想做的事情。正如所指出的那样,in this answer to a related question unique_together在DB层强制实施。如果检查由django模型继承创建的数据库表,您将看到数据库无法完成此操作。
针对一些替代解决方案,请查看相关问题。
你缺少的是基类中的abstract = True
。这将创建一个包含子类的所有字段的表。