#django #forms #styling #django-bootstrap4
Вопрос:
здравствуйте, спасибо за ваш визит, я новичок в Django, я хотел бы знать, как стилизовать форму с помощью django-bootstrap-v5, я пробую это и не работает
у меня есть это form.py
pathesForm = inlineformset_factory(
Book,
quotation,
fields=('name','time',),
can_delete=False,extra=4,max_num=4,
widgets={'name': forms.TextInput(attrs={
'placeholder': 'name of book',
})
}
)
я использую django-bootstrap-v5 и в файле html
эта форма со мной не работает
<form role="form" class="form-horizontal" method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
<div class="row">
<div class="col-md-6">
{% bootstrap_field form.name %}
</div>
<div class="col-md-6">
{% bootstrap_field form.time %}
</div>
</div>
{% if form.maybemissing %}
{% bootstrap_field form.maybemissing %}
{% endif %}
{% endfor %}
<button type="submit">Save</button>
</form>
но это работает со мной (я могу сохранить форму)
{% bootstrap_formset_errors formset %}
<form role="form" class="form-horizontal" method="post">
{% csrf_token %}
{% bootstrap_formset formset %}
<button type="submit">Save</button>
</form>
это мое view.py
def hello(request,id):
book=Book.objects.get(id=id)
if request.method == 'POST':
form= pathesForm(request.POST,request.FILES,instance=book)
if form.is_valid():
form.save()
form = pathesForm(instance=book )
return render(request,'hello/pathesForm.html',{'formset':form})
я использую print («привет»), чтобы попытаться понять, в чем проблема, и в результате кажется, что форма недействительна
, как я могу настроить стиль своей формы, как в первой
Ответ №1:
в своих представлениях вы забыли передать тогда другое утверждение, так что вот оно
def hello(request,id):
book=Book.objects.get(id=id)
if request.method == 'POST':
form= pathesForm(request.POST,request.FILES,instance=book)
if form.is_valid():
form.save()
else:
form = pathesForm(instance=book)
return render(request,'hello/pathesForm.html',{'formset':form})
и в вашем html-файле при запросе поля файла
вы должны указать тип шифрования, вот он
<form role="form" class="form-horizontal" method="POST" enctype="multipart/form-data">
это должно решить вашу проблему и сказать мне, если вы все еще получаете какие-либо ошибки, хорошего дня
Комментарии:
1. проблема не в том, как стилизовать форму с помощью начальной загрузки
2. проблема, почему форма не сохраняется
3. тогда, пожалуйста, будьте более точны, задавая вопрос, и всегда используйте правильное название, обновляя мой anwser
4. оператор else ничего не делает, и тип enctype не работает
5. в любом случае, у меня есть проблема, я опубликую правильный ответ
Ответ №2:
в любом случае, если у вас возникли проблемы с от использования печати(форма.ошибки) до того, как форма будет действительна, и после этого у меня возникла проблема, и я получил эту ошибку [{‘id’: [‘Это поле обязательно.’]} soulition:
<form role="form" method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
<div class="row">
<div class="col-md-6">
{% bootstrap_field form.name %}
</div>
</div>
{% if form.maybemissing %}
{% bootstrap_field form.maybemissing %}
{% endif %}
{% endfor %}
я думаю, что он успешно использует набор форм только из-за ( автоматическое добавление идентификатора )
и если вы хотите, чтобы forloop, вы должны добавить его вручную