【问题标题】:Prospect matching query does not exist潜在客户匹配查询不存在
【发布时间】:2017-11-08 04:48:35
【问题描述】:

我是 django 的新手,我被这个表单问题困住了。我不知道错误是什么意思。

潜在客户匹配查询不存在。

它说错误发生在这里:if form.is_valid():

这是我的文件:

forms.py

class ProspectForm(forms.ModelForm):
    full_name = forms.CharField(
        label="Full Name",
        max_length=120,
        required=False,
    )

    email = forms.EmailField(
        label="E-mail",
        max_length=120,
        required=False,
    )

    contact_number = forms.CharField(
        label="Contact Number",
        max_length=14,
        required=False,
    )

    def clean_email(self):
        email = self.cleaned_data.get('email')
        try:
            Prospect.objects.get(email=email)
            raise forms.ValidationError('This email is taken')
        except VendicsUser.DoesNotExist:
            return email

    def clean_number(self):
        number = self.cleaned_data.get('number')
        validate_integer(number)
        try:
            Prospect.objects.get(contact_number=number)
            raise forms.ValidationError('This number is taken')
        except VendicsUser.DoesNotExist:
            if len(number) < 11:
                return number
            else:
                raise forms.ValidationError('Number is too short')

    def __init__(self, *args):
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.form_class = 'contact_form'
        self.helper.form_action = ''
        self.helper.layout = Layout(
            Field('full_name', css_class='form_fields'),
            Field('email', css_class='form_fields'),
            Field('contact_number', css_class='form_fields'),
            Hidden('sub_domain', ''),
            FormActions(
                Submit('submit', 'SUBMIT', css_class='form_button'),
            )
        )
        super(ProspectForm, self).__init__(*args)

    class Meta:
        model = Prospect
        exclude = ['user']

views.py

def landingpage(request, subdomain=None):
    form = ProspectForm(request.POST or None)
    if form.is_valid():
        form.save(commit=False)
        # for future changes
        form.save()
        return redirect('' + subdomain + '/')

    context = {
        'subdomain': subdomain,
        'form': form,
    }
    user = get_object_or_404(WebDetail, domain=subdomain)
    return render(request, "landingpage/landingpage.html", context)

【问题讨论】:

    标签: python django


    【解决方案1】:

    您收到错误是因为您试图获取数据库中不存在的对象。您没有发布回溯,但我认为这是问题所在:

    try:
        Prospect.objects.get(email=email)
        raise forms.ValidationError('This email is taken')
    except VendicsUser.DoesNotExist:
        return email
    

    get() 引发 Prospect.DoesNotExist 异常,而不是 VendicsUser.DoesNotExist。引发的异常正好经过您的 except 块。更新所有代码以反映您尝试捕获的异常并且一切顺利。

    【讨论】:

    • 我没看到。我也忘了更新异常。谢谢。现在可以了。
    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多