2016-11-15 4 views
0
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 

Моделиобъект не имеет атрибута не получить, а переопределение метода 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') 

Ошибка я получаю

" posts "не имеет атрибута get.

Я пробовал видеть другие блоги, но ничего не работает. Я переопределил метод post в классе CreatePosts, чтобы работать определенным образом. Именно поэтому я получаю эту ошибку или это из-за некоторого несоответствия URL. Как только пользователь попадает в submit, я хочу, чтобы они вернулись в ту же форму, что и URL.

+1

Почему вы вообще игнорируете 'post'? Вы должны сделать эту логику в 'form_valid'. –

ответ

1

Ваш метод пост возвращает экземпляр модели

return new_post 

Все виды должны возвращать HttpResponse так проще всего, чтобы вернуться с новой должности в контексте будет render

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

 Смежные вопросы

  • Нет связанных вопросов^_^