我有 4 个 Django 模型:
class KeyOne(models.Model):
name = models.CharField(unique=True)
class KeyTwo(models.Model):
name = models.CharField(unique=True)
class KeyThree(models.Model):
name = models.CharField(unique=True)
class KeyList(models.Model):
key_one = models.ForeignKey(KeyOne)
key_two = models.ForeignKey(KeyTwo)
key_three = models.ForeignKey(KeyThree)
list = models.CharField()
Run Code Online (Sandbox Code Playgroud)
基本上,是与、和KeyList的不同组合相关联的关键字列表。如何确保在 Django 管理中只能输入唯一的组合?KeyOneKeyTwoKeyThree
Bok*_*tto 11
姜戈 > 2.2
请改用带有约束选项的 UniqueConstraint。UniqueConstraint 提供比 unique_together 更多的功能。unique_together 将来可能会被弃用。
所以在你的情况下:
class KeyList(models.Model):
key_one = models.ForeignKey(KeyOne)
key_two = models.ForeignKey(KeyTwo)
key_three = models.ForeignKey(KeyThree)
list = models.CharField()
class Meta:
constraints = [
models.UniqueConstraint(fields=["key_one", "key_two", "key_three"], name="all_keys_unique_together")
]
Run Code Online (Sandbox Code Playgroud)
您必须在 KeyList 的 Meta 类中设置:
class KeyList(models.Model):
key_one = models.ForeignKey(KeyOne)
key_two = models.ForeignKey(KeyTwo)
key_three = models.ForeignKey(KeyThree)
list = models.CharField()
class Meta:
unique_together = (("key_one", "key_two", "key_three"),)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3846 次 |
| 最近记录: |