我正在尝试保存一个字段“公司”,它是一个自动完成字段。我正在使用ajax jquery,但是在尝试保存表单时出现错误:“选择一个有效的选择。该选择不是可用的选择之一。” 。只有输入公司ID(即1、2)而不是名称“ Jack in the Box”,我才能保存它。知道为什么会这样吗?
更新:在我的views.py-> QuestionCreate Class-> Post方法中,“ form.is_valid()”失败了。我认为我的错误出在Post方法的某处,而我没有正确传递公司名称?请帮助!
Models.py
12
View.py
- '0'
forms.py
class Question(models.Model):
question_text = models.CharField(max_length=200,
validators=[validate_badwords])
pub_date = models.DateTimeField('date published')
company = models.ForeignKey(Company,
on_delete=models.CASCADE,
null=True,
default=None)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200,
validators=[validate_badwords])
votes = models.IntegerField(default=0)
class Company(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(default=None, null=True)
B2B = "B2B"
B2A = "B2A"
B2C = "B2C"
BUSINESS_CHOICES = ((B2B, "B2B"), (B2A, "B2A"), (B2C, "B2C"))
business = models.CharField(max_length=3,
choices=BUSINESS_CHOICES,
default=B2A)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
html / js文件
class QuestionCreate(CreateView):
template_name = 'polls/question_form.html'
model = Question
form_class = QuestionForm
success_url = reverse_lazy('polls:index')
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
choice_form = ChoiceInlineFormSet()
return self.render_to_response(
self.get_context_data(form=form, choice_form=choice_form))
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
choice_form = ChoiceInlineFormSet(self.request.POST)
if (form.is_valid() and choice_form.is_valid()):
return self.form_valid(form, choice_form)
else:
return self.form_invalid(form, choice_form)
def form_valid(self, form, choice_form):
self.object = form.save(commit=False)
self.object.pub_date = timezone.now()
self.object.save()
choice_form.instance = self.object
choice_form.save()
return HttpResponseRedirect(self.success_url)
def form_invalid(self, form, choice_form):
return self.render_to_response(self.get_context_data(form=form,
choice_form=choice_form))