Использование Django ChoiceField дает ошибку значения
Я пытаюсь создать динамический выбор. Я заполняю варианты выбора с помощью unit_list
. Данные в unit_list
загружаю из API (units
). Я устанавливаю варианты динамически в конструкторе. Но когда я пытаюсь сохранить новую форму, она выдает 'ошибка значения'.
Желаю хорошего дня.
class Announcement(models.Model):
title = models.CharField(max_length=200, verbose_name=_('İlan Başlığı'))
unit = models.IntegerField(null=True,blank=True)
def announcement_new(request):
response = requests.get('http://127.0.0.1:8001/api/units/list/')
units = response.json()
unit_list=[]
for unit in units:
unit_list.append(((int(unit.get('id'))), str(unit.get('name'))))
ann_form = AnnouncementForm(unit_list)
if request.method == 'POST':
ann_form = AnnouncementForm( request.POST)
if ann_form.is_valid():
ann_instance = ann_form.save(commit=False)
ann_instance.save()
return redirect('ann')
else:
print('Hata: ',ann_form.errors)
else:
context = {
'ann_form':ann_form,
}
return render(request,'pages/ann/ann_new.html',context)
class AnnouncementForm(forms.ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs={
"class": "form-control",
"placeholder": "",
}))
unit = forms.ChoiceField(
required=False,
widget=forms.Select(attrs={
"class": "form-control form-select select2",
}),)
def __init__(self, unit_list, *args, **kwargs):
super(AnnouncementForm, self).__init__(*args, **kwargs)
self.fields['unit'].choices = unit_list
class Meta:
model = Announcement
fields = "__all__"