假设我有一个抽象模型:
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')
答案 0 :(得分:0)
回答我自己的问题:由于找不到更好的解决方案,我用了艰苦的方法并逐个模型地实现了唯一的模型。