前景匹配查询不存在

2024-05-13 23:01:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我是刚到django的,我被这个问题困住了。我不知道这个错误是什么意思。你知道吗

Prospect matching query does not exist.

它说错误发生在这里:如果表格.u有效吗():

这是我的档案:

表单.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']

视图.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)

Tags: subdomainselfformhelperfalsenumbergetreturn
1条回答
网友
1楼 · 发布于 2024-05-13 23:01:55

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

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

get()引发了一个Prospect.DoesNotExist异常,而不是VendicsUser.DoesNotExist。引发的异常正好经过except块。更新所有代码以反映您试图捕获的异常,这样您就可以开始了。你知道吗

相关问题 更多 >