我正在使用此软件包来提供软删除逻辑。 https://github.com/MnogoByte/django-permanent
class ExternalSystem(PermanentModel):
full_name = models.CharField()
class Fact(PermanentModel):
external_system = models.ForeignKey(blank=True, null=True, on_delete=models.DO_NOTHING)
所以,如果我“删除”ExternalSystem,在Fact admin change视图中,我在ExternalSystem字段中看到“ - ”。保留FK,但默认管理器无法访问ExternalSystem对象。
我发现修复它的唯一方法是更改FactEditForm:
external_system = forms.ModelChoiceField(queryset=ExternalSystem.all_objects.all())
但是,我必须以十种形式进行此类更改。而且我还必须覆盖逻辑来分隔两个表单 - 编辑和创建 - 因为“删除”对象不应该在CreateForm中。但出于历史原因,他们必须留在ChangeForm中。
还有其他办法吗?