Заполнение многих строк формы экземплярами модели в django не работает

Я пытаюсь построить систему комментариев и постов на django. Я хочу, чтобы при нажатии на отдельное сообщение для комментирования, сообщение было уже заполнено, а также request.user был уже заполнен, так что комментатору не нужно выбирать, какое сообщение он комментирует или выбирать, кто является комментатором. Я фактически добился этого, когда пользователь хочет сделать пост, его имя будет заполнено в поле author filed.

views.py:

@login_required(login_url="login")
def make_tweet_view(request):
    author = request.user
    form = make_tweet_form(initial={"author": author})
    if request.method == "POST":
        form = make_tweet_form(request.POST or None)
        if form.is_valid():
            form.save()
    context= {'forms': form}
    return render(request, "hometweet/make-tweet.html", context)

Но почему-то попытка не работает для моего просмотра комментариев

mycomment view:

def comment_view(request, id):
    posts = Post.objects.get(id = id)
    user = request.user
    forms= comment_form(initial={"user": user, "posts":posts})
    if request.method == "POST":
        forms= comment_form(request.POST or None)
        if forms.is_valid():
            forms.save()
    context = {"forms": forms}
    return render(request, "hometweet/comment.html", context)

мои модели и их взаимоотношения:

class Post(models.Model):
    content = models.TextField()
    pics = models.ImageField(null= True, blank= True, upload_to= 'images/')
    date_created = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name= "post_author")

    def __str__(self):
        return f"{self.content}"
    

class Coment(models.Model):
    comment_post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name= "post_comments")
    comment_author = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name= "comment_author")
    comments = models.TextField()
    comment_pics = models.ImageField(null= True, blank= True, upload_to= 'images/')
    comment_date_created = models.DateTimeField(auto_now_add=True)

файл шаблона комментария:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>comment</title>
</head>
<body>
    <form action="" method="POST">
        {% csrf_token %}
        {{forms.as_p}}
    </form>
</body>
</html>

Предположим, что класс формы комментария выглядит примерно так:

# forms.py

from django.forms import ModelForm

from .models import Comment

class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = "__all__"
        # this is equivalent to writing all model fields
        # fields = ["comment_post", "comment_author", "comments", "comment_pics", "comment_date_created"]

Если вы хотите заполнить некоторые поля, то вы используете словарь, где ключ - имя поля, а значение - то, чем вы хотите заполнить поле формы:

# views.py

from .forms import CommentForm

# ...

def comment_view(request, id):
    post = Post.objects.get(id=id)
    user = request.user
    form = CommentForm(initial={"comment_post": post, "comment_author": user})
    # ...
Вернуться на верх