Python 如何在Django ORM中为M2M关系表创建UniqueConstraint? class MyChoices(models.IntegerChoices): 选项A=1 选项B=2 MyModelA类(models.Model): choice=models.IntegerField(choices=MyChoices.choices) 有效载荷=型号。CharField(…) MyModelB类(models.Model): models_a=models.ManyToManyRelationshipField(MyModelA,…) 有效载荷=型号。CharField(…)

Python 如何在Django ORM中为M2M关系表创建UniqueConstraint? class MyChoices(models.IntegerChoices): 选项A=1 选项B=2 MyModelA类(models.Model): choice=models.IntegerField(choices=MyChoices.choices) 有效载荷=型号。CharField(…) MyModelB类(models.Model): models_a=models.ManyToManyRelationshipField(MyModelA,…) 有效载荷=型号。CharField(…),python,django,orm,Python,Django,Orm,是否有一种方法可以使用MyModelA.choice字段和MyModelB主键字段在app\u my\u model\u a表上创建UniqueConstraint class MyChoices(models.IntegerChoices): 选项A=1 选项B=2 MyModelA类(models.Model): choice=models.IntegerField(choices=MyChoices.choices) MyModelB类(models.Model): models_a=mo

是否有一种方法可以使用
MyModelA.choice
字段和
MyModelB
主键字段在
app\u my\u model\u a
表上创建
UniqueConstraint

class MyChoices(models.IntegerChoices):
选项A=1
选项B=2
MyModelA类(models.Model):
choice=models.IntegerField(choices=MyChoices.choices)
MyModelB类(models.Model):
models_a=models.ManyToManyRelationshipField(MyModelA,通过='MyModelC')
MyModelC类(models.Model):
model\u a=models.ForeignKey(MyModelA,on\u delete=models.CASCADE)
model_b=models.ForeignKey(MyModelB,on_delete=models.CASCADE)
类元:
约束=[
models.UniqueConstraint(字段=['model\u a','model\u b'],name='unique\u a\u b')
]
您可以将模型定义为:

class MyChoices(models.IntegerChoices):
选项A=1
选项B=2
MyModelA类(models.Model):
choice=models.IntegerField(choices=MyChoices.choices)
MyModelB类(models.Model):
models_a=models.ManyToManyRelationshipField(MyModelA,通过='MyModelC')
MyModelC类(models.Model):
model\u a=models.ForeignKey(MyModelA,on\u delete=models.CASCADE)
model_b=models.ForeignKey(MyModelB,on_delete=models.CASCADE)
类元:
约束=[
models.UniqueConstraint(字段=['model\u a','model\u b'],name='unique\u a\u b')

]
我输入了我的意思,对不起,我需要为一个模型字段和其他模型id设置一个
唯一约束。@khjfpggkfmkqqqcifw:不,这是不可能的,你通常应该以不同的方式建模,例如在m2m模型中对
有效载荷进行编码。对不起,我输入了我的意思,我需要为一个模型字段和其他模型id设置一个
UniqueConstraint
。@khjfpggkfmkqqqcifw:不,这是不可能的,您通常应该以不同的方式建模,例如在m2m模型中对
有效负载进行编码。
class MyChoices(models.IntegerChoices):
    CHOICE_A = 1
    CHOICE_B = 2


class MyModelA(models.Model):
    choice = models.IntegerField(choices=MyChoices.choices)


class MyModelB(models.Model):
    models_a = models.ManyToManyRelationshipField(MyModelA, through='MyModelC')

class MyModelC(models.Model):
    model_a = models.ForeignKey(MyModelA, on_delete=models.CASCADE)
    model_b = models.ForeignKey(MyModelB, on_delete=models.CASCADE)

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['model_a', 'model_b'], name='unique_a_b')
        ]