Доступ к подмножеству полей формы Django - PullRequest
0 голосов
/ 04 октября 2018

Как можно вставить разметку между подмножествами полей формы в django, оставаясь сухим?

Учитывая:

class CompensationUpdate(UpdateView):
    model = Compensation
    fields = [
        'salary1',
        'salary2',
        'incentive1',
        'incentive2', ]

Я бы хотел иметь доступ к ним в представлении таким образом, чтобы я мог обернуть их группы в разметку.Например:

<div class="ibox-content">
    {% for field in form.salary_fields %}
        ...
    {% endfor %}
</div>
<div class="ibox-content">
    {% for field in form.incentive_fields %}
        ...
    {% endfor %}
</div>

У меня более 50 полей в форме примерно в 10 группах, поэтому мне нужно сделать это в СУХОЙ манере.Хотя я могу обращаться к каждому полю индивидуально, я не могу понять, как определять подмножества (либо в UpdateView, либо непосредственно в шаблоне).

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете использовать django-betterforms, который имеет FieldSets , в который вы можете сгруппировать свои поля.

В своем метаклассе на форме вы указываете FieldSetsсгруппированных полей:

class Meta:
    fieldsets = (
        ('info', {'fields': ('username', 'email')}),
        ('location', {'fields': ('address', ('city', 'state', 'zip'))}),
        ('password', {'password1', 'password2'}),
    )

И в шаблоне вы можете перебирать FieldSets

{% for fieldset in form %}
    <div class="ibox-content">
        {% for field in fieldset %}
            ...
        {% endfor %}
    </div>
{% endfor %}

Вы можете увидеть больше предлагаемой реализации шаблона здесь .

Другие решения: этот ответ или django-form-utils , что является лучшей документированной версией моего ответа.Последнее, однако, кажется, сегодня не поддерживается, но может работать в зависимости от вашей версии Django.

...