Мне нужно установить значение по умолчанию для ModelChoiceField
Значение отправляется с моего views.py
.
Я искал некоторые другие подобные вопросы, но это не помогло, поскольку все было о ChoiceField
с choices
, а не ModelChoiceField
с queryset
views.py
def edit_package(request, pk):
current_package = get_object_or_404(models.Package, pk=pk)
edit_package_form = forms.EditPackageForm(request.POST, name=current_package.package_name,
teacher=current_package.package_teacher_name,
level=current_package.package_level,
subject=current_package.package_subject,
price=current_package.package_price)
if request.method == 'POST':
if edit_package_form.is_valid():
pass
else:
edit_package_form = forms.EditPackageForm(request.POST, name=current_package.package_name,
teacher=current_package.package_teacher_name,
level=current_package.package_level,
subject=current_package.package_subject,
price=current_package.package_price)
context = {
'current_package': current_package,
'edit_package_form': edit_package_form,
}
return render(request, 'edit_package.html', context)
forms.py
class EditPackageForm(forms.Form):
def __init__(self, *args, **kwargs):
current_name = kwargs.pop("name")
current_teacher = kwargs.pop("teacher")
current_level = kwargs.pop("level")
current_subject = kwargs.pop("subject")
current_price = kwargs.pop("price")
super(EditPackageForm, self).__init__(*args, **kwargs)
self.fields['package_name'] = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control', 'value': current_name}))
self.fields['teacher_name'] = forms.ModelChoiceField(queryset=models.Teacher.objects.all(),
initial=current_teacher,
widget=forms.Select(attrs={'class': 'form-control'}),
required=False)
self.fields['level_name'] = forms.ModelChoiceField(queryset=models.Level.objects.all(),
initial=current_level,
widget=forms.Select(attrs={'class': 'form-control'}),
required=False)
self.fields['subject_name'] = forms.ModelChoiceField(queryset=models.Subject.objects.all(),
initial=current_subject,
widget=forms.Select(attrs={'class': 'form-control'}),
required=False)
self.fields['package_price'] = forms.IntegerField(
widget=forms.NumberInput(attrs={'class': 'form-control', 'value': current_price}))
И вот как это выглядит, TextInput
и NumberInput
имеют значение по умолчанию, но initial
не работает с ModelChoiceField
![tooltip Screen_shot](https://snag.gy/SO2YIp.jpg)