在重写POST方法时,object没有属性get

时间:2016-11-15 16:13:03

标签: django django-views django-generic-views

class CreatePosts(CreateView):
    model = posts
    fields = ['title','comments']

    def post(self, request, *args, **kwargs):

        current_inspectionfile = Inspectionfile.objects.get(pk =   self.kwargs['pk'])
        new_post =   posts.objects.create(inspectionfile=current_inspectionfile,
                 title =request.POST.get("title"),
                 comments =request.POST.get("comments"))

       return new_post

模型

class posts(models.Model):
    inspectionfile = models.ForeignKey(Inspectionfile,   on_delete=models.CASCADE, default=1)
    title = models.CharField(max_length=120)
    comments = models.TextField()
    flag = models.BooleanField(default=False)

    def get_absolute_url(self):
       return reverse('posts_form', kwargs={'pk': self.pk})

    def __str__(self):
        return self.title 

表单是一个简单的模板:

<form class = "form_horizontal" action = "" method = "post">
    {% csrf_token %}
    {{form.as_p}}
    <button type="submit">Submit</button>
    </form>


my url is:
url(r'^(?P<pk>[0-9]+)/$',views.CreatePosts.as_view(),name=='posts_form')

我得到的错误是

  

&#34;帖子&#34;对象没有属性get。

我试过看过其他博客,但似乎没什么用。我已经覆盖了CreatePosts类中的post方法,以某种方式工作。这是我收到此错误的原因,还是因为某些URL不匹配。一旦用户点击提交,我希望他们返回相同的格式,即URL。

1 个答案:

答案 0 :(得分:1)

您的post方法正在返回模型的实例

return new_post

所有视图都必须返回一个HttpResponse,因此在上下文中使用新帖子返回的最简单的事情是render

return render(request, self.template_name, {'new_post': new_post })