【问题标题】:How to ignore custom model manager and overrided delete method in admin?如何在管理员中忽略自定义模型管理器和覆盖的删除方法?
【发布时间】:2018-05-14 14:37:42
【问题描述】:

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

编辑 1

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

编辑 2

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

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

第二个问题的解决方案是在自定义delete方法中添加参数:

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

【问题讨论】:

  • 将参数添加到您的自定义delete 方法中。
  • @BearBrown 有效!您可以创建一个答案以便我接受吗?
  • 我添加了,但如果需要请编辑它

标签: python django


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-02-18
    • 2011-12-20
    • 2019-05-25
    • 1970-01-01
    • 2016-09-04
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多