オブジェクトが実際に削除されたのではなく、削除済みとマークされたテーブルがたくさんあるとします。ここで、特定のフィールド値のセットを持つ削除されていないオブジェクトは 1 つしか存在できないが、同じフィールド値を持つ複数の削除済みオブジェクトを持つことができるという制約を適用したいと考えています。
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')
制約を強制する最良の方法は何ですか?