Относится к этому post , передавая дополнительные kwargs в modelformset исчезают индексы в шаблоне
form.py
class ConceptForm(forms.ModelForm):
class Meta:
model = app_models.Concept
fields = '__all__'
def __init__(self, *args, **kwargs):
self.action = kwargs.pop('action', None)
super(ConceptForm, self).__init__(*args, **kwargs)
if self.action is not None:
if self.action == 'detail':
for field in self.fields:
self.fields[field].widget.attrs['readonly'] = True
ConceptModelFormset = modelformset_factory(
model = model,
fields = show_fields,
extra = extra,
min_num = min_num,
max_num = 15,
form = ConceptForm
)
views.py
form_kwargs = {}
form_kwargs['action'] = action
modelformset = ConceptModelFormset(queryset=queryset, prefix=model.__name__.lower(), form_kwargs=form_kwargs)
шаблон. html
<div id="formset_{{ formset.prefix }}">
{{ formset.management_form }}
{% for form in formset %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form %}
<div class="form-group">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{{ field|add_class:"form-control" }}
</div>
{% endfor %}
{% endfor %}
</div>
Если я вызываю метод modelformset_factory без указания формы c, индексы появляются, но тогда функция отключения полей недоступна.
Кто-нибудь знает, что происходит. Спасибо.