来自抽象模型领域的Django unique_together

时间:2018-12-28 16:10:54

标签: python django python-3.x django-models

假设我有一个抽象模型:

class SoftDelete(models.Model):
    _active = models.NullBooleanField(default=True)

class Meta:
    abstract = True

还有一个从这个抽象模型中插入的模型:

class SomeModel(AbstractModel):
    some_field = models.IntegerField()

class Meta:
    unique_together = ('_active', 'some_field')

在这里,我已经通过使用unique_together将some_field约束在_active字段中,该字段由我拥有的软删除功能使用。

这是可行的,但是,所有我有唯一约束的模型现在都需要将_active应用于唯一性,因为删除后它并没有真正删除,只有_active = None

我的问题是,因为我的所有模型都会受到SoftDelete的干扰,是否有一种有效的方法将_active应用于其Metas中具有unique_together约束的所有模型?而不是手动添加它,甚至可能会忘记它。

我希望在抽象的Meta类中添加类似波纹管的东西:

For unique_together in child_unique_together:
    unique_together.append('_active')

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:由于找不到更好的解决方案,我用了艰苦的方法并逐个模型地实现了唯一的模型。