缺少1个必需的位置参数:“ request”

时间:2018-07-11 09:18:58

标签: python django

这是我的view.py

class categAdmin(admin.ModelAdmin):

    change_form_template = 'category_forms.html'
    list_display = ['title']
    model = Category
    fields = ['status','title','category_post','body', 'photo', 
    'url','slider','Gallery','lists','pk_tree','video','maps']

    # def render_change_form(self, request, context,  **kwargs):
    #     post = Post.objects.all()
    #     context['eve'] = post
    #     return super(categAdmin,self).render_change_form(request, context, **kwargs)

    def item_add(request, self, post_id):
        tree = post_id
        return self.add_view(request, extra_context={'tree': tree})

我遇到错误item_add(),缺少1个必需的位置参数:'request'

2 个答案:

答案 0 :(得分:0)

您需要交换selfrequest参数。

def item_add(self, request, post_id):
    tree = post_id
    ...

答案 1 :(得分:0)

始终记住,方法是绑定到对象的,并且每当您调用方法时,python都会将self参数(在其上调用方法的对象)隐式传递给方法调用,在您的示例中:

class CategAdmin:
      def item_add(self, request, post_id):
           pass

将是签名格式,请注意self对象是方法签名中的第一个参数。因此,当您这样做

categoryAdmin = CategAdmin()
categoryAdmin.item_add(request,123)
this is what will be called by the python interpreter CategAdmin.item_add(categoryAdmin,request,123)

另一个反馈将是改善您的编码风格,即遵循一些约定,例如始终以大写字母开头类名称,为类以及方法和变量赋予有意义的名称。 这使您的代码更具可读性,并且通过此调试将更快。

干杯!