如何在管理员中忽略自定义模型管理器和覆盖删除方法?

时间:2018-05-14 14:37:43

标签: python django

我在自定义delete的自定义QuerySet中覆盖ModelManager方法(已将对象设为不可删除并将“有效”字段设置为false)。 有没有办法忽略管理面板中的自定义管理器,所以我实际上可以从那里删除对象?

编辑1

首先想到:我可以为自定义管理器指定另一个名称。但现在它被视为默认...以及如何绕过obj.delete()?

编辑2

第一个问题的解决方案是在默认情况下添加自定义管理器:

objects = models.Manager()
active_manager = EventManager()

第二个问题的解决方案是将param添加到自定义delete方法:

def delete(self, *args, **kwargs):
    force = kwargs.pop('force', False)
    ...

1 个答案:

答案 0 :(得分:1)

您可以向自定义delete方法添加参数。例如:

def delete(self, super=True):
    if super:
         return self.get_queryset().delete()
    else:
        # Your custom code here