Пользователь, соответствующий запросу, не существует. Я хочу добавить данные, если пользователь пришел впервые?
Вообще-то я работаю над системой сдачи крови. Я проверяю, что если пользователь уже существует, то я проверяю, что он или она завершил 90 дней или нет, если он или она завершил, то его или ее запрос будет принят. если не завершил, то я покажу сообщение U have to Complete 90 days. Я добавляю данные через администратора и проверяю на основе 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