Как использовать стиль бутстрапа ModelFormset
У меня есть представление, которое использует formset factory
, но я пытаюсь стилизовать отображаемую html-форму. Но обычные стили для форм не работают, и я не уверен, что мне нужно сделать, чтобы применить CSS-стили.
Мое мнение
def get_questionnaire(request, project_id, questionnaire_id):
# Get the Response object for the parameters
response = Response.objects.get(
project_name_id=project_id, questionnaire_id=questionnaire_id
)
AnswerFormSet = modelformset_factory(Answer, fields=('answer',), extra=0)
answer_queryset = Answer.objects.filter(response=response
).order_by('question__sequence'
).select_related('question')
if request.method == 'POST':
# to be completed
pass
else:
# Get the list of questions for which no Answer exists
new_answers = Question.objects.filter(
questionnaire__response=response
).exclude(
answer__response=response
)
# This is safe to execute every time. If all answers exist, nothing happens
for new_answer in new_answers:
Answer(question=new_answer, response=response).save()
answer_formset = AnswerFormSet(queryset=answer_queryset)
return render(request, 'pages/formset.html', {'formset': answer_formset})
на данный момент я просто пытаюсь стилизовать одно поле, применяя виджеты в forms.py. Но это не работает.
class answer_formset(ModelForm):
class Meta:
model = Answer
fields = ('answer',)
widgets = {
'answer': forms.Select(attrs={'class': 'form-select'}),
}
HTML
{{ formset.management_form }}
{% for form in formset %}
{{ form.id }} {{ form.instance.question.question }}
{{ form.answer }}
<br>
{% endfor %}
Спасибо
Вам нужно указать фабрике, какой ModelForm
использовать:
AnswerFormSet = modelformset_factory(Answer, form=answer_formset, fields=('answer',), extra=0)
Из документации:
Вы можете передать аргумент формы, чтобы использовать его в качестве отправной точки для построения ModelForm.
дополнительная информация: https://docs.djangoproject.com/en/4.0/ref/forms/models/#modelform-factory