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/CADjLj1pSq9v7Ar-3vx2WnmO8v2iwC7gdHCcfZzosnjpkaqNGWA%40mail.gmail.com.

Reply via email to