Django:有没有办法将外键字段添加到“unique_together”?

Shi*_*hiv 5 python database django

我希望能够使模型在来自外键模型的值上具有唯一性。不确定这在 django 中是否可行。

示例:我有一个模型 A:

class modelA(models.Model):
    fieldA1 = models.AutoField(primary_key=True)
    fieldA2 = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)

模型 B 也为:

class modelB(models.Model):
    fieldB1 = models.CharField(max_length=20)
    fieldB2 = models.ForeignKey(modelA)

    class Meta:
        unique_together = ('fieldB1', 'fieldB2',<<'fieldA2'>>)
Run Code Online (Sandbox Code Playgroud)

我想将 fieldA2 添加为模型 B 的 unique_together 子句中的属性之一。这在 Django 中可能吗?我不能这样做-

unique_together = ('fieldB1', 'fieldB2','modelA__fieldA2')
Run Code Online (Sandbox Code Playgroud)

don*_*yor 4

你不能。数据库约束不能包含此类数据。在创建实例或编写一些验证器之前,您必须以编程方式检查它

  • 那真不幸。谢谢!编辑:找到相关的 - http://stackoverflow.com/questions/14470585/how-to-validate-uniqueness-constraint-across-foreign-key-django (3认同)