У меня есть три 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'.
Может кто-нибудь из вас направить меня к этой цели?