Django - Изменение формы модели с помощью ChoiceField

У меня есть ModelForm, и я хочу скрыть некоторые поля и добавить текст подсказки в соответствии со значениями, получаемыми из поля выбора

ex:

if value_getting_from_the_choiceField == '1'
    hide_some fields in ModelForm
elif value_getting_from_the_choiceField == '2'
    add help text to some fields

Вы можете использовать метод __init__ вашего подкласса ModelForm для настройки полей формы на основе значения поля ChoiceField.

Вот пример:

from django import forms

class MyModelForm(forms.ModelForm):
    MY_CHOICES = (
        ('choice_1', 'Choice 1'),
        ('choice_2', 'Choice 2'),
        ('choice_3', 'Choice 3'),
            )
    choice_field = forms.ChoiceField(choices=MY_CHOICES)
other_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        if self.data.get('choice_field') == 'choice_1':
            self.fields['other_field'].help_text = 'Some help text for choice 1'
        elif self.data.get('choice_field') == 'choice_2':
            self.fields['other_field'].help_text = 'Some help text for choice 2'
        elif self.data.get('choice_field') == 'choice_3':
            self.fields['other_field'].widget = forms.HiddenInput()

В этом примере other_field будет иметь различный текст справки в зависимости от значения choice_field, а если choice_field имеет значение choice_3, то other_field будет скрыт с помощью виджета HiddenInput.

Вы также можете использовать словарь self.initial для установки начального значения полей формы, или словарь self.cleaned_data для доступа к очищенным данным формы после ее отправки.

Надеюсь, это поможет! Если не ошибаюсь, я новичок в django.

Вернуться на верх