class MyChoices(models.IntegerChoices):
CHOICE_A = 1
CHOICE_B = 2
class MyModelA(models.Model):
choice = models.IntegerField(choices=MyChoices.choices)
payload = models.CharField(...)
class MyModelB(models.Model):
models_a = models.ManyToManyRelationshipField(MyModelA, ...)
payload = models.CharField(...)
有没有一种方法可以在app_my_model_b_my_model_a
表上创建一个具有MyModelA.choice
字段和MyModelB
主键字段的UniqueConstraint
?
您可以将模型定义为through=…
模型[Django-doc]:
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')
]