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

Posted

技术标签:

【中文标题】用户匹配查询不存在。如果用户是第一次来,我想添加数据?【英文标题】:User matching query does not exist. I want to add data if user is first time coming? 【发布时间】:2022-01-21 20:36:26 【问题描述】:

实际上我正在研究献血系统。我正在检查用户是否已经存在,然后我检查他或她是否完成了 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)

【问题讨论】:

blood.models.User.DoesNotExist:用户匹配查询不存在。 【参考方案1】:

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

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

【讨论】:

好的让我检查一下,这是否会添加新成员? 它的工作刷但不添加新数据如果添加新的 CNIC 它说未找到用户

以上是关于用户匹配查询不存在。如果用户是第一次来,我想添加数据?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中,向MYSQL插入多条数据,如何判断如果某记录已经存在就不插入

子查询 - 如果不匹配最高值,则返回 NULL

Django 2.1 令牌匹配查询不存在

对 Django 用户匹配查询不存在消息感到沮丧

jQuery Tokeninput 如果不存在则添加

Google Analytics“用户计数”与大查询“用户计数”不匹配