我创建了一个模型管理器,应该删除该条目。我总是收到错误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()
答案 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()