Django model form set initial
У меня есть список комментариев, хранящийся в базе данных, схема:
models.py
class Comment(models.Model):
content = models.CharField(max_length=255)
набор запросов
In [1]: from comments.models import Comment
In [2]: Comment.objects.all()
Out[2]: <QuerySet [<Comment: Comment object (1)>, <Comment: Comment object (2)>]>
In [3]: Comment.objects.all()[0]
Out[3]: <Comment: Comment object (1)>
In [4]: Comment.objects.all()[0].content
Out[4]: 'first comment'
Я хочу использовать CommentListUpdateView
, чтобы позволить пользователю обновлять множество комментариев на одной странице по отдельности (каждый комментарий имеет форму и кнопку обновления)
поэтому я в
views.py
# Create your views here.
def commentListUpdateView(request):
forms = []
for comment in Comment.objects.all():
form = CommentUpdateForm(request.POST, instance=comment, initial={'content': comment.content})
# form = CommentUpdateForm(request.POST, instance=comment)
# form.fields['content'].initial = comment.content
forms.append(form)
return render(request, 'comments/comment_list_update.html', {'forms': forms})
forms.py
class CommentUpdateForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['content']
template
{% for form in forms %}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<button type="submit">Update</button>
</form>
{% endfor %}
Однако я всегда могу получить значение из backend, но значение всегда отсутствует во frontend. html, который я получил в результате:
<form method="POST" enctype="multipart/form-data">
<input type="hidden" name="csrfmiddlewaretoken" value="zQtpR8P4K8A1a7i1ELI9kJg1YRo0Y7d02hpSWqY5VPX2j48x1j4UHubWmosaGk4Q">
<label for="id_content">Content:</label>
<ul class="errorlist">
<li>This field is required.</li>
</ul><input type="text" name="content" maxlength="255" required="" id="id_content">
<button type="submit">Update</button>
</form>
Я прочитал много соответствующих постов, посвященных ModelForm
initial
ценности.
Передать начальное значение modelform в django
Но решения, которые они предлагают, не сработали. Я буду очень рад, если вы сможете предложить какую-то помощь.