Django Crispy Form Not Show Django-Multislelectfield Обязательная ошибка - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть Crispy Form и простой CreateView, в котором есть несколько полей.
все проверки полей работают правильно, но в хрустящей форме не отображаются ошибки проверки, вызванные Django-Multiselectfield. Я вижу ошибки в шаблоне с {{ form.errors }}, которыевозвращает:

available_guarantee - This field is required. deal_type - This field is required. status - This field is required.

MyForm Code:

class ProjectForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ProjectForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'

        self.helper.layout = Layout(
            Fieldset(
                _('About the Project'),
                'name',
                'location',
                'location_type',
                'sector',
                Div('status', css_class='with-checkbox'),
                'revenue_generation_year',
                'total_cost',
                'previous_fund',
            ),
            Fieldset(
                _('Transaction'),
                'fundraising_goal',
                Div('deal_type', css_class='with-checkbox'),
                'payback_duration',
                'collateral_rate',
                Div('offered_stake', css_class='with-checkbox'),
                Div('available_guarantee', css_class='with-checkbox'),

            ),
            Fieldset(
                _('Financial Details'),
                'adscr',
                'debt_equity_ratio',
                'irr',
            ),
            Fieldset(
                _('About You'),
                'owner_role',
                Div('have_mandate', css_class='with-checkbox'),

            ),
            Fieldset(
                '',
                'description',
            ),
            Div(
                FormActions(
                    Submit('save', _('Save changes'), css_class='btn-primary')), css_class='form-actions'))

    class Meta:
        model = Project
        fields = '__all__'

ProjectCreateView:

class ProjectCreateView(LoginRequiredMixin, CreateView):
    model = Project
    form_class = ProjectForm

    def get_success_url(self):
        return reverse('accounts:user-projects')

    def form_valid(self, form):
        form.instance.owner = self.request.user
        form.instance.state = Project.DRAFT_STATE
        form.instance.language = get_language()
        return super(ProjectCreateView, self).form_valid(form)

Версии :

  • Django 2.0
  • django-multiselectfield 0.1.5
  • django-crispy-формы 1.7.2 (с пакетом bootstrap4)

вещей, которые я делал до сих пор:

  • Попытка добавить Обязательный в поле модели (результат: django-multiselect не получает обязательный атрибут)
  • играл с хрустящим макетом формы и глобальными объектами (добавление атрибутов и т. д.)
  • попытался вручную добавить обязательное поле (self.fields['status'].required = True)

. Ни одно из указанных выше решений не сработало.Спасибо за вашу помощь

...