django,python,jquery自动完成-选择一个有效的选择。该选择不是可用的选择之一

时间:2018-10-22 01:48:56

标签: python jquery ajax django autocomplete

我正在尝试保存一个字段“公司”,它是一个自动完成字段。我正在使用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))

0 个答案:

没有答案