Django:模型管理器

时间:2018-09-05 22:08:09

标签: python django

我创建了一个模型管理器,应该删除该条目。我总是收到错误delete() takes 1 positional argument but 2 were given。谁能向我解释为什么我收到此消息?

view.py

ReservedItem.objects.delete(order_reference)

models.py

class ReservedItemManager(models.Manager):
    def delete(order_reference):

    super().get_queryset().filter(order_reference=order_reference).delete()

1 个答案:

答案 0 :(得分:1)

您在方法定义中忘记了self

因此,Python将您的order_reference参数作为self参数(因为它的名称没有任何区别,并且名称self只是一个约定),因此Python认为您的方法没有任何其他参数,并在尝试使用参数进行调用时引发了异常。

您的课程定义应如下所示:

class ReservedItemManager(models.Manager):
    def delete(self, order_reference):  # <-- note `self` here
        super().get_queryset().filter(order_reference=order_reference).delete()