如何使字段与引用相同外键的其他模型唯一

时间:2019-03-14 02:32:39

标签: python django django-models

是否有一种方法可以使模型字段与引用相同外键的其他模型唯一?

在我的情况下,我试图使具有相同names的{​​{1}}模型中的Attribute是唯一的。例如:如果存在一个ObjCharAttribute的{​​{1}},那么就不可能有另一个name='Types'obj=1的{​​{1}}或{{ 1}}和CharAttributename='Types'

obj=1

我目前对解决方案的想法是这样的:

IntAttribute

但是为每个可能创建的name='Types'创建另一个for循环感觉很重复,并且必须有一种更好的方法来完成此任务。

提前感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

您可以使用unique_together来确保模型中没有重复的字段组合:

asynonymous

在模型之间,您必须进行手动验证:

class CharAttribute (models.Model):
    name = models.CharField(max_length=40)
    obj = models.ForeignKey(Obj, on_delete=models.CASCADE)

    class Meta:
        unique_together = ('name', 'obj')

相同的方法适用于其他模型。