Поля ввода Djando Form отображаются только после отправки недействительной формы

Я работаю над образовательным приложением "Аукционы", которое должно позволить пользователям делать ставки и добавлять комментарии к существующему аукционному объявлению. Я хочу реализовать комментарии в виде CommentForm и включить сниппет comment_add.html этой формы в шаблон view_listing.html, который в свою очередь расширяет базовый layout.html.

Но в view_listing.html изначально не отображается поле ввода из comment_add.html. Поле ввода "textarea" отображается только после нажатия кнопки "submit", так как это обязательное поле.

Ожидаемый результат: скриншот области "Комментарий" на странице

Фактический результат: скриншот области "Комментарий" на странице

Результат после нажатия кнопки "Commit": скриншот области "Комментарий" на странице

Конечно, реализация поля ввода комментария как <input> в comment_add.html работает.

Я предположил, что проблема связана с тем, что один и тот же контекст передается в view_listing.html из других представлений (имя переменной контекста одинаково для всех представлений - "listing"). Но пока мне не удалось найти решение.

views.py

def comment_add(request, listing_id):
    listing = Listing.objects.get(pk=listing_id)
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            text = form.cleaned_data["text"]
            author  = User.objects.get(pk=request.user.id)
            comment = Comment(text=text, author=author)
            comment.save()
            context = {"form": form, "listing": listing}
            return HttpResponseRedirect(reverse("auctions:listing", args=(listing.id,)))
        else:
            context = {"form": form, "listing": listing, "watched": watched}
            return render(request, "auctions/view_listing.html", context)
    else:
        context = {"form": CommentForm(), "listing": listing, "watched": watched}
    
    return render(request, "auctions/view_listing.html", context)

models.py

class Comment(models.Model):
    text = models.CharField(max_length=1024)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=CASCADE, related_name="author")
    date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.text

forms.py

class CommentForm(forms.ModelForm):
    text = forms.CharField(widget=forms.Textarea, max_length=1024, label="Comment")

    class Meta:
        model = Comment
        fields = ("text",)

templates:

view_listing.html

{% if user.is_authenticated %}
    {% if not watched %}
        <div>
            <span><a type="button" class="btn btn-primary" 
                    href="{% url 'auctions:watchlist_add' listing_id=listing.id %}">
                    Add to Watchlist</a></span>
        </div>
    {% else %}
        <div>
            <span class="btn btn-secondary">In Watchlist</span>
        </div>
    {% endif %}
    {% include "auctions/close_listing.html" %}
    {% include "auctions/comment_add.html" %}
{% endif %}

comment_add.html

<form action="{% url 'auctions:comment_add' listing.id %}" method="POST">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit Comment">
</form>

Что я должен сделать, чтобы реализовать комментарии именно таким образом: с помощью CommentForm и {% include %} / {% extends %}?

Вернуться на верх