Python “ListBlogPost”对象没有属性“get_object”django

Python “ListBlogPost”对象没有属性“get_object”django,python,django,Python,Django,在发布之前,我正在使用列表视图中的表单查看评论文章。如果选择“发布”,则它将显示在我的模板中,否则不会显示。我觉得一切都很好。但是为什么我得到这个错误'ListBlogPost'对象没有属性'get_object'。这是我的密码: views.py froms.py models.py approve-post.html 当我点击发布按钮时,我得到一个错误:ListBlogPost对象没有属性“object\u list”类ListBlogPost中的“self”指的是这个类ListBlogPo

在发布之前,我正在使用列表视图中的表单查看评论文章。如果选择“发布”,则它将显示在我的模板中,否则不会显示。我觉得一切都很好。但是为什么我得到这个错误'ListBlogPost'对象没有属性'get_object'。这是我的密码:

views.py

froms.py

models.py

approve-post.html


当我点击发布按钮时,我得到一个错误:ListBlogPost对象没有属性“object\u list”

类ListBlogPost中的“self”指的是这个类ListBlogPost。 因此,get_对象方法应该是此类的一部分,或者应该是继承此类的ListView或FormView的一部分。因为它不是创建此错误的地方

您可以在类中定义get_对象,如下所示:

class ListBlogPost(ListView,FormView):
       model = Blog
       template_name = 'approval-blog-post.html'
       form_class = AdminBlogFrom
       
       def get_object(self,pk):
           // add your logic here
       
       def get_success_url(self):
        return reverse('approval-blog')
  
       def get_context_data(self, **kwargs):
          data = super(ListBlogPost, self).get_context_data(**kwargs)
          data['blog_admin_form'] = AdminBlogFrom()
          
          return data
      
       def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            messages.add_message(self.request, messages.INFO, 'Your Comment pending for admin approval')
            return self.form_valid(form)
        else:
            messages.add_message(self.request, messages.INFO, 'Somethings Wrong. Please try again')
            return self.form_invalid(form)

       def form_valid(self, form):
        form.save()
        return super(ListBlogPost, self).form_valid(form)

在方法post中ListBlogPost类的views.py中,您正在调用self.object=self.get\u对象,并且没有为此类和继承自的类定义get\u对象。谢谢Relandom。如何定义get_对象?为什么需要此方法?如果你拆下这条线,它会不会工作?我可能错了,但我认为您不需要/使用iTerLandom,我必须在列表视图中使用表单。我猜这行有点错误`self.object=self.get_object`感谢Sarath Chandran K提供的answare。尝试了这个def get_objectself,slug:blog=get_object\u或_404Blog,slug=slug,但不起作用。请告诉我你到底想做什么。您正在尝试选择并发布博客帖子,还是正在尝试创建博客帖子。尝试了以下定义:get_objectself,slug:blog=get_object\u或_404Blog,slug=slugreturn blog,现在出现此错误get_object缺少一个必需的位置参数:post方法中的“slug”是否获取slug的值。如果是这样,请传递该值以获取对象方法Sarath Chandran K我更新了我的问题。请参阅..仍不工作..在添加逻辑get_对象后出现此错误缺少1个必需的位置参数:“slug”
class AdminBlogFrom(ModelForm):
       class Meta:
        model = Blog
        fields = ['is_published','author','slug']
 author = models.ForeignKey(User,on_delete=models.CASCADE,max_length=100)
 title = models.CharField(max_length=300,unique=True)
 body = RichTextUploadingField()
 slug = models.SlugField(max_length=255,unique=True)
 created_at = models.DateTimeField(auto_now_add= True,blank=True,null=True)
 updated_at = models.DateTimeField(auto_now= True,blank=True,null=True)
 CHOICES = (
        ('published', 'published',),
        ('pending', 'pending',),
        ('rejected', 'rejected',),
        )
 is_published = models.CharField(
        max_length=10,
        choices=CHOICES,default='pending'
      )
<form  method="POST">
{% csrf_token %}
{{form}}
<button class="btn btn-info">Publish</button>
</form>
class ListBlogPost(ListView,FormView):
       model = Blog
       template_name = 'approval-blog-post.html'
       form_class = AdminBlogFrom
       
       def get_object(self,pk):
           // add your logic here
       
       def get_success_url(self):
        return reverse('approval-blog')
  
       def get_context_data(self, **kwargs):
          data = super(ListBlogPost, self).get_context_data(**kwargs)
          data['blog_admin_form'] = AdminBlogFrom()
          
          return data
      
       def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            messages.add_message(self.request, messages.INFO, 'Your Comment pending for admin approval')
            return self.form_valid(form)
        else:
            messages.add_message(self.request, messages.INFO, 'Somethings Wrong. Please try again')
            return self.form_invalid(form)

       def form_valid(self, form):
        form.save()
        return super(ListBlogPost, self).form_valid(form)