Как стилизовать форму с помощью django-bootstrap-v5
Здравствуйте, спасибо за ваш визит Я новичок в Django Я хотел бы знать, как стилизовать форму Я пробовал это и не работает У меня есть это
это form.py
pathesForm = inlineformset_factory(
Book,
VoyagePlace,
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('hello), чтобы попытаться узнать, в чем проблема, и результат кажется, что форма не действительна, как я могу настроить стиль моей формы, как в первом случае
В ваших представлениях вы забыли передать оператор else, так что вот он
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">
это должно решить вашу проблему и скажите мне, если вы все еще получаете любую ошибку, хорошего дня
всегда, если у вас есть проблема с from используйте print(form.errors) до того как форма будет действительна и после нее У меня возникла проблема и я получил эту ошибку [{'id': ['This field is required.']} 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 %}
я думаю, что успех использования formset только из-за (id добавляется автоматически) а если вы хотите сделать forloop, то должны добавлять его вручную