Or ignore the form username field;

author=request.user

Sachin Ranadive

On Thu, Mar 5, 2020, 8:17 PM Sachin Ranadive <[email protected]>
wrote:

> Change view code, assign User object instead.
>
> author = User.objects.get(username=request.POST["username"])
>
> Sachin
>
> On Thu, Mar 5, 2020, 4:00 AM Joey Jo Jo Jr <[email protected]> wrote:
>
>> New to Django.
>>
>> I'm trying to set up a simple comment form where I can add a title for
>> the comment, content of the comment, and attach the username of the user
>> that is currently signed in and posting it.
>>
>> I run into the following error when running it:
>>
>> Cannot assign "'john'": "Entry.author" must be a "User" instance.
>>
>>
>>  I think I understand what's happening here, however I'm having a hard time 
>> figuring out how to implement it properly.
>>
>>
>> *Here's my model code:*
>>
>>
>> class Entry(models.Model):
>>
>>     title = models.CharField(max_length=60)
>>
>>     content = models.TextField(max_length=500)
>>
>>     author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
>>
>>
>>
>>     def __str__(self):
>>
>>         return f"{self.id}"
>>
>>
>> *Here's my view code:*
>>
>>
>> @login_required
>>
>> def add(request):
>>
>>     if request.method == "POST":
>>
>>         entry = Entry(
>>
>>             title = request.POST["title"],
>>
>>             content = request.POST["content"],
>>
>>             author = request.POST["username"]
>>
>>         )
>>
>>
>>         entry.save()
>>
>>
>>         return render(request, "articles/index.html", {
>>
>>         "entries": Entry.objects.all()
>>
>>         })
>>
>>
>>     else:
>>
>>         return render(request, "articles/add.html", {
>>
>>             "username": request.user
>>
>>         })
>>
>>
>> *And here's my form code in my template:*
>>
>>
>> {% block body %}
>>
>>     <h1>New Entry</h1>
>>
>>     <form action="{% url 'add' %}" method="post">
>>
>>         {% csrf_token %}
>>
>>         <input type="hidden" name="username">
>>
>>
>>         <label for="title">Title:</label>
>>
>>         <input type="text" name="title" placeholder="Entry Title">
>>
>>         <br>
>>
>>
>>
>>         <label for="content">Content:</label>
>>
>>         <textarea name="content">
>>
>>         Content goes here
>>
>>         </textarea>
>>
>>         <br>
>>
>>
>>         <input type="submit" value="Publish">
>>
>>     </form>
>>
>> {% endblock %}
>>
>>
>> --
>> 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 view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/e0bb05c3-ecee-4f75-97ca-a659cb7e6181%40googlegroups.com
>> <https://groups.google.com/d/msgid/django-users/e0bb05c3-ecee-4f75-97ca-a659cb7e6181%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CADjLj1ospeEke8hLFiDz6rbuXaHogrN2Fp_eRvE1myVB_0y03Q%40mail.gmail.com.

Reply via email to