用户匹配查询不存在。如果用户是第一次来,我想添加数据?
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 它说未找到用户以上是关于用户匹配查询不存在。如果用户是第一次来,我想添加数据?的主要内容,如果未能解决你的问题,请参考以下文章