Django - 创建包含其他模型字段的唯一键

时间:2017-06-22 07:18:21

标签: python django model unique-key

我试图创建“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')

1 个答案:

答案 0 :(得分:0)

你做不到......(至少我认为)..

unique_together子句直接转换为SQL唯一索引。而且你只能在一个表的列上设置它们,而不是几个表的组合。

您可以自己添加验证,只需覆盖validate_unique方法并将此验证添加到其中。

文档:http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.validate_unique