Django: перебирайте тег Jinja «Включить» с формами Foreignkey - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть подчиненная форма, унаследованная от основной формы, и я настроил теги включения для различных видов форм.Для простых форм или сложных форм моя папка «include» имеет всю логику, основанную на jinja.Теперь мне нужно использовать тег include, и мне нужно перебирать поле подчиненной формы с Foreignkey.Но я не могу этого сделать.Небольшая помощь будет высоко ценится.

Унаследованная форма:

class InheritedAddressForm (AddressForm):

def __init__(self, *args, **kwargs):
    super(InheritedAddressForm, self).__init__(*args, **kwargs)
    self.fields['extended_form_value'].queryset = InheritedModel.objects.all()

Форма включает в себя фрагмент: includes / forms / simple_input_field.html

{% load widget_tweaks %}
<div class="{% if field.errors %}has-error{% endif %}">

    {% if not nolabel and field|widget_type != 'checkboxinput' and field|widget_type != 'radioselect' and field|widget_type != 'hiddeninput' %}
        <label for="{{ field.auto_id }}" class="control-label{% if field.field.required %} required{% endif %}">
            {{ field.label|safe }}
        </label>
    {% endif %}
    {% if field|widget_type == 'checkboxinput' %}
        <div class="custom-control custom-checkbox">
            {% if field.errors %}
                {% render_field field class+="custom-control-input is-invalid" id=field.auto_id %}
            {% else %}
                {% render_field field class+="custom-control-input" id=field.auto_id %}
            {% endif %}
            {% if not nolabel %}
                <label for="{{ field.auto_id }}" class="custom-control-label">
                    <span class="{% if field.field.required %}required{% endif %}">{{ field.label|safe }}</span>
                </label>
            {% endif %}
        </div>
    {% elif field|widget_type == 'radioselect' %}
        {% if not nolabel %}
            <div class="control-label">
                <span class="{% if field.field.required %}required{% endif %}">{{ field.label|safe }}</span>
            </div>
        {% endif %}
        <div class="input-list-container inline">
            {% for choice in field %}
                <label class="custom-control custom-radio">
                    <input class="custom-control-input" id="{{choice.id_for_label}}" type="radio" value="{{choice.choice_value}}" name="{{field.name}}"{% if field.value == choice.choice_value %} checked="checked"{% endif %}>
                    <label class="custom-control-label" for="{{choice.id_for_label}}">{{choice.choice_label}}</label>
                </label>
            {% endfor %}
        </div>
    {% else %}
        {% if field.errors %}
            {% if field|widget_type == 'select' or field|widget_type == 'advancedselect' %}
                {% render_field field class+="custom-select is-invalid" %}
            {% else %}
                {% render_field field class+="form-control is-invalid " %}
            {% endif %}
        {% else %}
            {% if field|widget_type == 'select' or field|widget_type == 'advancedselect' %}
                {% render_field field class+="custom-select" %}
            {% else %}
                {% render_field field class+="form-control" %}
            {% endif %}
        {% endif %}
    {% endif %}

    {% if not noerror %}
        {% for error in field.errors %}
            <span class="error-block"><i class="icon-exclamation-sign"></i> {{ error }}</span>
        {% endfor %}
    {% endif %}

    {% if field.help_text %}
        <span class='help-block'>
            {# We allow HTML within form help fields #}
            {{ field.help_text|safe }}
        </span>
    {% endif %}
</div>

Моя унаследованная форма:

    {% if form.extended %}
    <div class="form-row">
            <div class="form-col-full form-group">
                #{% for choice in extended_set.all %}
                {% include 'includes/forms/simple_input_field.html' with field=extended %}
#Need to iterate extended with "include" tag. 
                #{% endfor %}
        </div>
    {% endif %}

Я получил расширенное отображение, но мне нужно перебрать расширенный, чтобы получить значения ForeignKey с расширенным в шаблоне.Может кто-нибудь предложить способ, как перебрать тег включения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...