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.

