用户匹配查询不存在。如果用户是第一次来,我想添加数据?

User matching query does not exist. I want to add data if user is first time coming?

实际上我正在研究献血系统。我正在检查用户是否已经存在,然后我检查他或她是否完成了 90 天,如果他或她没有完成,那么他或她的请求将被接受。如果没有完成那么我会显示消息你必须完成 90 天。 我通过数据管理端添加数据并在 CNIC 的基础上检查他或她是否完成了 90 天及其工作但现在的主要问题是如果从前端添加新数据他说用户匹配查询不存在.现在我必须添加其他部分但我不知道如何?请告诉我过去 4 天我被卡住了。

 #forms.py 
    
    from django.core.exceptions import ValidationError
    from django.forms import ModelForm
    from django.shortcuts import redirect
    from .models import User
    from datetime import  datetime,timedelta
    
    
    class UserForm(ModelForm):
        class Meta:
            model = User
            fields = "__all__"
        
        def clean_cnic(self):
            cnic = self.cleaned_data['cnic']
            print("This is a cnic",cnic)
            existuser = User.objects.get(cnic = cnic)
            if existuser:
                previous_date = existuser.last_donation
                current_date = datetime.now().astimezone()
                print(previous_date,"-----_---",current_date)
                final = current_date - previous_date
                print("The final is -> ",final)
                if final < timedelta(days= 90):
                    raise ValidationError("U have to wait 90 days to complete")
                return final



 #views.py
    
    from django.shortcuts import render
    from .models import *
    from .forms import UserForm
    
    
    def home(request):
        return render(request, 'home.html')
        
    def donor(request):
        if request.method == "POST":
            userform = UserForm(request.POST)
            if userform.is_valid():
                userform.save()
        else:
            userform = UserForm()
        return render(request, 'donor.html',{'userform':userform})

简单地说,你需要确保用户存在。

def clean_cnic(self):
    cnic = self.cleaned_data['cnic']
    try:
        existuser = User.objects.get(cnic=cnic)
    except User.DoesNotExist:  
        raise ValidationError("User not found!")

    previous_date = existuser.last_donation
    current_date = datetime.now().astimezone()
    final = current_date - previous_date
    if final < timedelta(days= 90):
        raise ValidationError("U have to wait 90 days to complete")
    return final