Django скрытые проблемы с полями ввода - PullRequest
1 голос
/ 12 марта 2019

У меня есть следующая форма модели, где я должен добавить скрытое поле.

class AddEditGroupForm(forms.ModelForm):
    id_sel_comp = forms.CharField(
        label='selected company',
        initial=0,
        required=True,
        widget=forms.HiddenInput(attrs={'id': 'id_sel_comp'})
    )

    class Meta:
        model = Group
        fields = ('name', 'id_sel_comp')

    def __init__(self, *args, **kwargs):
        super(AddEditGroupForm, self).__init__(*args, **kwargs)
        self.fields['name'].widget.attrs.update({'class': 'form-control m-input form-control-sm'})

    def as_two_col_layout(self):
        return self._html_output(
            normal_row='<div class="form-group m-form__group row"><label class="col-sm-3 col-form-label">%(label)s</label><div class="col-sm-9">%(field)s%(help_text)s</div></div>',
        error_row='%s',
        row_ender='',
        help_text_html=' <span class="m-form__help">%s</span>',
        errors_on_separate_row=True)

Форма отображает только скрытое поле формы, а поле имени name не отображается.Когда я отмечаю поле 'id_sel_comp' как НЕ скрытое, отображаются все поля.Что не так с этим?Форма отображается в шаблоне с:

{{ form.as_two_col_layout }}

1 Ответ

1 голос
/ 13 марта 2019

Вы не указали свой row_ender правильно.В настоящее время вы устанавливаете его на '', что не соответствует тому, что вы указали как normal_row.Ваш row_ender в вашем случае </div></div>.Итак, ваш as_two_col_layout становится

def as_two_col_layout(self):
    return self._html_output(
        normal_row='<div class="form-group m-form__group row">'
                   '<label class="col-sm-3 col-form-label">%(label)s</label>'
                   '<div class="col-sm-9">%(field)s%(help_text)s</div></div>',
        error_row='%s',
        row_ender='</div></div>',
        help_text_html=' <span class="m-form__help">%s</span>',
        errors_on_separate_row=True)

Надеюсь, это поможет!

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