让我考虑以下两个模型:
class Policy(models.Model):
name = models.SlugField(max_length=256, blank = False, unique = True)
def default_policy():
return Policy.objects.get(name='default').pk
class Item(models.Model):
policy = models.ForeignKey('Policy', on_delete=models.SET_DEFAULT, default=default_policy)
Run Code Online (Sandbox Code Playgroud)
除了一个操作外,一切都按预期工作。我仍然可以毫无例外地执行以下操作:
p = Policy.objects.get(name='default')
p.delete()
Run Code Online (Sandbox Code Playgroud)
这会产生孤立的Items,它们指的是“默认”Policy对象。不幸的是,此操作导致数据库中的完整性问题,因为现在有Item哪些 policy_id 列指的是Policy表的丢失记录。
我怎样才能防止这种情况发生?Policy当没有Items 指代它时删除“默认”对我来说是可以接受的。
django ×1