我觉得这应该很容易,但是我似乎在文档中找不到参考。
我有一个具有外键Resident
的Django模型Property
,当/如果用户删除了Property
,我将删除 Cascade 设置为{ {1},因为我认为最好不要破坏此数据,因为可以对客户进行审计以获取有关先前居民的信息。
我的问题是我有SET_NULL
和active
居民,有一个居民搜索功能,它可以正常工作,但是今天我注意到一个错误:删除后,每个关联的inactive
条目仍然具有设置为Resident
的 active 属性。我还需要将true
属性设置为Resident.active
,以使那些居民无法再登录系统,或显示在我的搜索功能中以显示活跃的居民。
除了删除false
时手动设置这些值之外,我该如何做?
以下是您需要的我的模型的相关部分:
Property
答案 0 :(得分:0)
最简单的选择是覆盖delete
模型中的Property
方法,并在那里更改相关Resident
的活动字段。但是,这具有与覆盖save
相同的问题,主要是在批量删除或迁移中不调用此方法。 https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-model-methods
另一种选择是使用信号并收听pre_delete or post_delete
第三个选择是检查property_id
是否为NULL
而不是使用活动字段。