form.py
class CreateForm(forms.ModelForm):
parent_id = forms.ModelChoiceField(queryset=Category.objects.all(), required = False)
name = forms.CharField(max_length = 100)
class Meta:
model = Category
fields = ('parent_id', 'name')
models.py
class Category(models.Model):
parent_id = models.IntegerField()
name = models.CharField(max_length = 50)
def __str__(self):
return self.name
view.py
class CreateView(TemplateView):
template_name = 'create.html'
def get(self, request):
form = CreateForm()
return render(request, self.template_name, {'form' : form})
def post(self, request):
form = CreateForm(request.POST)
if form.is_valid:
form.save()
return render(request, self.template_name, {'form' : form})
Форма создается в шаблоне в create.html ![html page](https://i.stack.imgur.com/CPiVJ.jpg)
Моя проблема заключается в том, что я выбираю категорию из выпадающего списка ModelChoiceField для parent_id в create.htmlЯ получаю объект, а не Id.Вот почему он отображает ошибку «[имя поля] должно быть целым числом» и не может передать значение в базу данных, поскольку parent_id объявлен как Integer в models.py.Мне нужно получить идентификатор выбранного значения и передать его в базу данных в поле «parent_id».Я знаю кое-что, что работает в поле зрения:
# parent_id = form.cleaned_data('parent_id').id
Я получил идентификатор таким способом, но он не помог мне, потому что form.save () не будет ничего брать из вида.он работает напрямую с form.py и просто сохраните его здесь.
Заранее спасибо