编程语言
首页 > 编程语言> > python-两种方式唯一的Django模型

python-两种方式唯一的Django模型

作者:互联网

关于这个主题已经有很多问题了,但是我没有寻找什么.

我有这个模型:

class Options(TimeStampedModel)
    option_1 = models.CharField(max_length=64)
    option_2 = models.CharField(max_length=64)

    class Meta:
        unique_together = ('option_1', 'option_2')

现在,我对字段有唯一的约束.
是否有一种方法也可以用另一种方式定义此方法,以便选项_1和选项_2无关紧要

例如:

Options.create('spam', 'eggs') # Allowed
Options.create('spam', 'eggs') # Not allowed
Options.create('eggs', 'spam') # Is allowed but should not be

提前致谢!

解决方法:

我认为ManyToMany与自定义through表的关系以及对该表的unique_together约束应该可以满足您的要求.

示例代码:

from django.db.models import Model, ForeignKey, ManyToManyField, CharField

class Option(Model):
    name = CharField()

class Thing(TimeStampedModel):
    options = ManyToManyField("Option", through="ThingOption")    

class ThingOption(Model):
    thing = ForeignKey(Thing)
    option = ForeignKey(Option)
    value = CharField()

    class Meta:
        unique_together = ('thing', 'option')

标签:unique-constraint,python,django,django-models
来源: https://codeday.me/bug/20191025/1927074.html