我试图创建“unique_together”'模型的元数据,但不是当前模型中的两个字段,其中一个是其他模型的字段(这是当前模型中的外键): 我想要'项目' model必须包含unique_together,其中包含其标识符'字段和Spec的container_id。一个Spec是' Item'中的外键。 试过这样的事情,但我得到了#34;未解决的参考规范......"
class Spec(BaseModel):
title = models.CharField(max_length=200)
identifier = models.IntegerField(unique=True)
container = models.ForeignKey(Container, related_name='specs')
class Item(SubmittalsBaseModel, BaseModel, DirtyFieldsMixin):
title = models.CharField(max_length=200)
identifier = models.CharField(max_length=200, unique=True)
spec = models.ForeignKey(Spec, related_name='items')
class Meta:
container_id = spec.container
unique_together = ('identifier', 'container_id')
答案 0 :(得分:0)
你做不到......(至少我认为)..
unique_together
子句直接转换为SQL唯一索引。而且你只能在一个表的列上设置它们,而不是几个表的组合。
您可以自己添加验证,只需覆盖validate_unique方法并将此验证添加到其中。
文档:http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.validate_unique