Django Admin: customizing the inline template (tabular.html)

I am trying to follow the recommendations in this answer , but I am stuck on how to edit a template.

Relevant part of my admin.py :

SegmentFormset = forms.models.inlineformset_factory(Division,Segment) class DivisionForm(forms.ModelForm): def __init__(self, **kwargs): super(DivisionForm, self).__init__(**kwargs) self.segment_formset = SegmentFormset(instance=self.instance, data=self.data, prefix=self.prefix) def is_valid(self): return (super(DivisionForm, self).is_valid() and self.segment_formset.is_valid()) def save(self, commit=True): assert commit == True res = super(DivisionForm, self).save(commit=commit) self.segment_formset.save() return res class DivisionInline(admin.TabularInline): model = Division form = DivisionForm template = 'competitions/admin/tabular.html' class CompetitionAdmin(VersionAdmin): inlines = [DivisionInline,] 

Relevant part of my template :

  {% for fieldset in inline_admin_form %} {% for line in fieldset %} {% for field in line %} <td class="{{ field.field.name }}"> {{ field.field.errors.as_ul }} {{ field.field }} </td> {% endfor %} {% endfor %} <td>My segment formset should be here</td> {% endfor %} 

I cannot figure out how to access the segment form set. I experimented with all variable names, and none of them are my DivisionForm element. The separation format is the {{fieldset.formset}} variable and that as far as I could get.

Change 1:

Actually, the corresponding part of the template is slightly longer;) Entering more code:

  <tbody> {% for inline_admin_form in inline_admin_formset %} {% if inline_admin_form.form.non_field_errors %} <tr><td colspan="{{ inline_admin_form.field_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr> {% endif %} <tr class="{% cycle row1,row2 %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}"> <td class="original"> {% if inline_admin_form.original or inline_admin_form.show_url %}<p> {% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %} {% if inline_admin_form.show_url %}<a href="../../../r/{{ inline_admin_form.original_content_type_id }}/{{ inline_admin_form.original.id }}/">{% trans "View on site" %}</a>{% endif %} </p>{% endif %} {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %} {{ inline_admin_form.fk_field.field }} {% spaceless %} {% for fieldset in inline_admin_form %} {% for line in fieldset %} {% for field in line %} {% if field.is_hidden %} {{ field.field }} {% endif %} {% endfor %} {% endfor %} {% endfor %} {% endspaceless %} </td> {% for fieldset in inline_admin_form %} {% for line in fieldset.formset %} {% for field in line %} <td class="{{ field.field.name }}"> {{ field.field.errors.as_ul }} {{ field.field }} </td> {% endfor %} {% endfor %} <td>My segment formset should be here</td> {% endfor %} {% if inline_admin_formset.formset.can_delete %} <td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td> {% endif %} </tr> {% endfor %} </tbody> 
+5
source share
1 answer

Forms are like lists, so you can rewrite them as

 {% for form in fieldset.formset %} {{ form.as_p }} {% endfor %} 
0
source

Source: https://habr.com/ru/post/1299980/


All Articles