The best way to debug it is add a print function with dir function just
before the error occurring line and see what are available attributes in
request.POST object like this print(dir("========", request.POST,
"========")) . Also without dir function will show what is available in
POST.
Look at the terminal after running development server and your action to
trigger error, see what are the attributes available for your request.
Probably you have to set form.instance.article = request.POST.get('article')
would work.
Regards
Britto
On Sun, 28 Apr 2019 at 02:56, Atsunori Kaneshige <[email protected]> wrote:
> Sorry, when I make a comment, I get this error.
>
> Any advice would be really appreciated!
>
>
>
> AttributeError at /articles/2/comment/
>
> 'WSGIRequest' object has no attribute 'article'
>
> Request Method: POST
> Request URL: http://127.0.0.1:8000/articles/2/comment/
> Django Version: 2.1.5
> Exception Type: AttributeError
> Exception Value:
>
> 'WSGIRequest' object has no attribute 'article'
>
> Exception Location:
> /Users/Koitaro/Desktop/Web_Development/MMBlog/articles/views.py
> in form_valid, line 75
> Python Executable:
> /Users/Koitaro/.local/share/virtualenvs/MMBlog-58h299OP/bin/python
> Python Version: 3.6.5
> Python Path:
>
> ['/Users/Koitaro/Desktop/Web_Development/MMBlog',
> '/Users/Koitaro/.local/share/virtualenvs/MMBlog-58h299OP/lib/python36.zip',
> '/Users/Koitaro/.local/share/virtualenvs/MMBlog-58h299OP/lib/python3.6',
>
> '/Users/Koitaro/.local/share/virtualenvs/MMBlog-58h299OP/lib/python3.6/lib-dynload',
> '/Applications/anaconda3/lib/python3.6',
>
> '/Users/Koitaro/.local/share/virtualenvs/MMBlog-58h299OP/lib/python3.6/site-packages']
>
> Server time: Sat, 27 Apr 2019 21:24:45 +0000
>
>
> On Saturday, April 27, 2019 at 5:07:19 PM UTC-4, Atsunori Kaneshige wrote:
>>
>> I really appreciate if anybody could give me an advice about form_valid.
>>
>> Here is what I want to do.
>> I am making a simple blog.
>> I am making simple features:
>> 1) only superuser can create articles.
>> 2) logged-in users can make comments to articles.
>>
>> I followed along tutorials and mostly done.
>> *But last thing I want to do is that when users make comments to any
>> articles, I want author field and article field to be automatically set.*
>> *Currently, users need to choose author field and article field to make
>> comments as well as comment texts.*
>>
>> The tutorial that I followed along uses form_valid and by using
>> form_valid, now I don't need to choose author.
>> But I have been struggling with how to automatically set article field by
>> using form_valid.
>>
>> I have a simple models.py and views.py below.
>>
>> <models.py>
>>
>> class Article(models.Model):
>> title = models.CharField(max_length=255)
>> body = models.TextField()
>> date = models.DateTimeField(auto_now_add=True)
>> author = models.ForeignKey(
>> get_user_model(),
>> on_delete=models.CASCADE,
>> )
>>
>> def __str__(self):
>> return self.title
>>
>> def get_absolute_url(self):
>> return reverse('article_detail', args=[str(self.id)])
>>
>> class Comment(models.Model): # new
>> article = models.ForeignKey(
>> Article,
>> on_delete=models.CASCADE,
>> related_name = 'comments',
>> )
>> comment = models.CharField(max_length=140)
>> author = models.ForeignKey(
>> get_user_model(),
>> on_delete=models.CASCADE,
>> )
>>
>> def __str__(self):
>> return self.comment
>>
>> def get_absolute_url(self):
>> return reverse('article_list')
>>
>> <views.py>
>> ...(not showing all)
>> #for comment
>> class ArticleCommentCreateView(LoginRequiredMixin, CreateView):
>> model = Comment
>> template_name = 'article_comment_new.html'
>> fields = ('comment',)
>> login_url = 'login'
>>
>> def form_valid(self, form):
>> form.instance.author = self.request.user
>> *form.instance.article = self.request.article*
>> return super().form_valid(form)
>>
>> I keep getting errors with this code.
>> I know that *form.instance.article = self.request.article* is something
>> wrong, but I am having hard time to figure out how to set article field to
>> be automatically set.
>>
>>
>> Please give any advice about this.
>> I really appreciate.
>>
>> Looking forward to hearing from anyone.
>>
>> Best regards,
>>
>> Nori
>>
>>
>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/352ed4ec-fcf8-4590-ae0b-9c97e29d80ef%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/352ed4ec-fcf8-4590-ae0b-9c97e29d80ef%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/CAF0v3b6K6o7Vhv9aJtx-NBPOwfECLOpqucuNyXVPMgTfWKzEhQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.