Django: Добавьте новое значение в ModelChoiceField
У меня есть поле ModelChoiceField в форме, которая использует виджет TextInput. Я хочу иметь возможность выбирать значение из базы данных или добавлять новые записи в базу данных с помощью этого ввода. Если значение еще не находится в базе данных, я получаю ошибку на форме, которая говорит: "Выберите правильный выбор. Этот выбор не является одним из доступных вариантов"
Модель
class FeedCategory(models.Model):
category = models.CharField(max_length=255, unique=True)
class RssFeed(models.Model):
category = models.ForeignKey(FeedCategory, null=True, on_delete=models.SET_NULL)
name = models.CharField(max_length=255)
feed = models.URLField()
Форма
class RssForm(forms.Form):
name = forms.CharField()
feed = forms.URLField()
category = forms.ModelChoiceField(queryset=FeedCategory.objects.all(), to_field_name='category', widget=forms.TextInput())
def clean(self):
cleaned_data = super().clean()
????
Виды
class RssCreateView(FormView):
template_name = 'dashboard/rss_feed_form.html'
form_class = RssForm
success_url = '/dashboard/'
def form_valid(self, form):
name = form.cleaned_data['name']
feed = form.cleaned_data['feed']
category = form.cleaned_data['category']
rss_obj = RssFeed(category=category, name=name, feed=feed)
rss_obj.save()
return super().form_valid(form)
Шаблон
<form method="post">
{%csrf_token%}
{{form|crispy}}
<button type="submit">Save</button>
</form>
Возможно, вам поможет то, что я использую:
category = models.ForeignKey("General.entity",verbose_name='Category', db_column="CategoryEntityRef", null=False, blank=False)
Итак, я создаю поле, которое указывает на существующую категорию, существующую в другой таблице. Оно будет отображать ее в виде выпадающего поля. Однако использование этого метода позволит мне иметь возможность добавить еще одну категорию: