首页 > 解决方案 > 申请人教育匹配查询不存在

问题描述

views.py 中的这个函数

视图.py

    def UpdateEducation(request):
        context = {}
        user_obj = request.user
        if not user_obj.is_authenticated:
            return redirect('login')
    
        user_id = Applicant.objects.filter(app_id = user_obj.app_id).first()
        print(user_id)
        applicant = ProfileInfo.objects.filter(user=user_id).first()
        print(applicant)
        user_info = ApplicantEducation.objects.filter(applicant_info = applicant).get()
        if request.POST:
            form = EducationForm(request.POST, instance=user_info)
            if form.is_valid():
                obj = form.save(commit=False)
                obj.applicant_info = applicant
                print(obj)
                obj.save()
                return redirect('profile')
            else:
                form = EducationForm()
                context['education_form'] = form
        else:
            try:
                form = EducationForm(
                    initial={
                        'institute_name': user_info.institute_name,
                        'marks_percentage' : user_info.marks_percentage,
                        'affilation_with' : user_info .affilation_with,
                        'date_completion':user_info.date_completion,
                        'degree_details' : user_info.degree_details,
                    }
                )
                context['education_form']= form
            except:
                form = EducationForm()
                context['education_form']= form
        return render(request, 'admission/signup.html', context)

我为views.py models.py制作的这个模型类


    class DegreeDetails (models.Model):
        degree_name = models.CharField(max_length=10)
        degree_category = models.CharField(max_length= 15)
    
        def __str__(self):
            return '%s %s'%(self.degree_name, self.degree_category)
    
    class ApplicantEducation(models.Model):
        applicant_info = models.ForeignKey(ProfileInfo, on_delete=models.CASCADE)
        degree_details = models.ForeignKey(DegreeDetails, on_delete= models.CASCADE)
        marks_percentage = models.FloatField(max_length=5, default=0.0)
        institute_name = models.CharField(max_length=100)
        affilation_with = models.CharField(max_length= 50)
        date_completion = models.DateField(auto_now_add=False, blank=True)

这是模型的表单类..... forms.py

    class EducationForm( forms.ModelForm):
        
        class Meta:
            model = ApplicantEducation
            fields = [
                'institute_name',
                'marks_percentage',
                'affilation_with',
                'date_completion',
                'degree_details',
            ] 
        def clean(self):
            if self.is_valid():
                institute_name = self.cleaned_data['institute_name']
                marks_percentage = self.cleaned_data['marks_percentage']
                affilation_with = self.cleaned_data['affilation_with']
                date_completion = self.cleaned_data['date_completion']
                degree_details = self.cleaned_data['degree_details']

这是我得到的 错误错误

    ApplicantEducation matching query does not exist.
    Request Method: GET
    Request URL:    http://127.0.0.1:8000/education/
    Django Version: 3.1.7
    Exception Type: DoesNotExist
    Exception Value:    
    ApplicantEducation matching query does not exist.
    Exception Location: C:\Users\cms.user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\query.py, line 429, in get
    Python Executable:  C:\Users\cms.user\AppData\Local\Programs\Python\Python39\python.exe
    Python Version: 3.9.1
    Python Path:    
    ['D:\\Development\\cmsproject',
     'C:\\Users\\cms.user\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip',
     'C:\\Users\\cms.user\\AppData\\Local\\Programs\\Python\\Python39\\DLLs',
     'C:\\Users\\cms.user\\AppData\\Local\\Programs\\Python\\Python39\\lib',
     'C:\\Users\\cms.user\\AppData\\Local\\Programs\\Python\\Python39',
     'C:\\Users\\cms.user\\AppData\\Roaming\\Python\\Python39\\site-packages',
     'C:\\Users\\cms.user\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
    Server time:    Thu, 11 Mar 2021 05:03:04 +0000

以下代码行中存在错误..... user_info = ApplyEducation.objects.filter(applicant_info =申请人).get()

任何人都请看看这个错误。整个代码旨在将用户的教育详细信息存储在后端数据库中......谢谢并期待您的回复......

标签: python-3.xdjangodjango-modelsdjango-viewsdjango-forms

解决方案


    if request.POST:
        user_info = ApplicantEducation.objects.filter(applicant_info = applicant).first()
        form = EducationForm(request.POST, instance=user_info)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.applicant_info = applicant
            print(obj)
            obj.save()
            return redirect('profile')
        else:
            context['education_form'] = form
    else:
        try:
            user_info = ApplicantEducation.objects.filter(applicant_info = applicant).get()
            form = EducationForm(#some values)

问题出在post方法上,比较两个views.py,你会看到区别。谢谢


推荐阅读