Изменение начального значения ModelChoiceField динамически зависит от выбора пользователя - PullRequest
0 голосов
/ 15 октября 2019

У меня есть три ModelChoiceFields. После того, как пользователь установил значение в первом флажке (уровне), начальное значение двух других флажков должно измениться.

Views.py

def index(request):
    form = SettingsForm()

    context = {
        'form' : form
    }

    return render(request, 'app/settings.html', context)

settings.html

  <form method="post">
    {% csrf_token %}
    <table>
      {{ settings_form }}
    </table>
    <button type="submit" class="button">Apply</button>
  </form>

forms.py

class SettingsForm(forms.ModelForm):
    class Meta:
        model = Setting
        fields = '__all__'

    level = forms.ModelChoiceField(
        widget = forms.Select,
        queryset = Level.objects.all()
    )

    language = forms.ModelChoiceField(
        widget = forms.Select,
        queryset = Language.objects.all(),
        initial = 0
    )

    country = forms.ModelChoiceField(
        widget = forms.Select,
        queryset = Country.objects.all()
    )

# I know I can do something like this in __init__:
# self.fields['language'].initial = Language.objects.filter(level=self.level).first()
# but that is not dynamically

Пример

Пользовательвыбирает level = 2, поэтому для language.initial должно быть установлено значение «German», а для county.initial - «Germany».

Если пользователь выбирает level = 1, то для language.initial следует установить значение «English» иcounty.initial to 'USA'.

Может кто-нибудь из вас направить меня к этой цели?

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