У меня есть ChoiceField в форме и я хочу сохранить его значение в модели.Проблема в том, что форма никогда не действительна, если поле является обязательным.Когда я установил значение «Ложь», форма действительна, но не содержит никаких данных - она просто пуста.
models.py:
class CVSS(models.Model):
av = models.CharField(
max_length=10,
null=True,
)
forms.py:
class CVSSForm(forms.ModelForm):
AV = [
(u'N', u'Network'),
(u'A', u'Adjacent'),
(u'L', u'Local'),
(u'P', u'Physical'),
]
av = forms.ChoiceField(
# required=False,
widget=forms.RadioSelect(),
choices=AV,
)
class Meta:
model = CVSS
fields = ['av',]
views.py:
def edit(request, fid):
cvss = get_object_or_404(CVSS, finding_id=fid)
cvss_form = CVSSForm(instance=cvss)
if request.method == 'POST':
cvss_form = CVSSForm(request.POST, instance=cvss)
if cvss_form.is_valid():
cvss_form.save()
edit.html:
<div class="table-responsive">
{% include "dojo/form_fields.html" with form=cvss_form %}
</div>
Форма отображается из form_fields.html:
{% elif field|is_radio %}
{% if field.auto_id %}
<label class="col-sm-4 control-label {% if field.field.required %}{{ form.required_css_class }}{% endif %}">
{{ field.label }}{% if field.field.required%}<sup>*</sup>{% endif %}
</label>
{% endif %}
<div class="col-sm-8 {{ classes.value }}">
{% for choice in field %}
<div class="radio">
<label>
{{ choice.tag }}
{{ choice.choice_label }}
</label>
</div>
{% endfor %}
{% for error in field.errors %}
<span class="help-block {{ form.error_css_class }}">{{ error }}</span>
{% endfor %}
{% if field.help_text %}
<i class="fa fa-question-circle has-popover" data-trigger="hover" data-content="{{ field.help_text }}" data-placement="right" data-container="body">
</i>
{% endif %}
</div>
{% else %}