假设我有一堆表,其中对象被标记为已删除而不是实际删除。现在,我想强制执行一个约束,即只能有一个具有一组特定字段值的未删除对象,但我可以有多个具有相同字段值的已删除对象。
class Deletable(models.Model):
deleted = models.BooleanField(default=False)
class Meta:
abstract=True
def soft_delete(self):
self.deleted=True
self.save()
class ConcreteModel(Deletable):
a = models.IntegerField()
b = models.IntegerField()
class Meta:
#wrong because there may have been some deleted rows
unique_together=('a', 'b')
执行约束的最佳方法是什么?