Я не могу добавить данные в базу данных с помощью формы Django
Если я оставляю все как есть, то при отправке формы выскакивает ошибка
"Выберите правильный выбор. Этот выбор не является одним из доступных вариантов."
И, например, если в forms.py я меняю Product.objects.values_list('product_name')
на класс с одним полем, например, Category.objects.all()
, то форма отправляется без ошибок.
Но мне нужен именно первый вариант, где я выбираю конкретное поле класса (product_name
), чтобы в форме в select были нужные опции...
Кто знает, как решить эту проблему?
models.py:
class Account(models.Model):
uploader_mail = models.EmailField(max_length=254)
body = models.CharField(max_length=4096)
product = models.ForeignKey('Product', on_delete=models.PROTECT)
class Product(models.Model):
product_name = models.CharField(max_length=400)
description = models.CharField(max_length=4096)
price = models.DecimalField(max_digits=8, decimal_places=2)
geo = models.CharField(max_length=2)
product_logo = models.ImageField(upload_to='img/logos', blank=True)
category = models.ForeignKey('Category', on_delete=models.PROTECT)
def __str__(self):
return self.product_name, self.description, self.geo,
class Category(models.Model):
category = models.CharField(max_length=100)
def __str__(self):
return self.category
forms.py:
class AddForm(forms.Form):
uploader_mail = forms.EmailField(
label='Owner mail',
initial='test@test.test',
widget=forms.EmailInput(attrs={'class': 'form-control'}))
body = forms.CharField(
label='Data line by line',
widget=forms.Textarea(attrs={'class': 'form-control','wrap': "off", }))
category = forms.ModelChoiceField(
queryset=Product.objects.values_list('product_name', flat=True),
label='Category',
empty_label=None,
widget=forms.Select(attrs={'class': 'form-select'}))
views.py:
def edit(request):
if request.method == 'POST':
form = AddForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
else:
form = AddForm()
editable = {'form': form, }
return render(request, 'goods_list/edit.html', editable)
<
Вернуться на верх
Так что меняйтесь
queryset=Product.objects.values_list('product_name', flat=True),
to
queryset=Category.objects.all(),