gpt4 book ai didi

python - django 模型形式的验证

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:12 25 4
gpt4 key购买 nike

我正在关注this在我的模型表单上添加自定义验证并且它正在工作......大部分。

我的代码:

from django import forms
from django.utils.translation import ugettext_lazy as _
from datetime import datetime, timedelta

from datetimewidget.widgets import DateWidget

from .models import User

class UserForm(forms.ModelForm):

class Meta:
# Set this form to use the User model.
model = User

# Constrain the UserForm to just these fields.
fields = ("birthdate")
widgets = {
'birthdate': DateWidget(attrs={'id':"id_birthdate"}, bootstrap_version=3)
}

def clean_birthdate(self):
birthdate = self.cleaned_data["birthdate"]
min_time = datetime.strptime('1920-01-01', '%Y-%m-%d').date()
delta = birthdate - min_time
if delta <= timedelta(days=0):
raise forms.ValidationError(_("We don't accept people born before 1920"))
return birthdate

在 1900 年 1 月 1 日之前,它会按预期引发错误,但一旦我进入 1899 年,它就不会了。我不确定是什么原因造成的。我正在使用DateTimeWidget .

我收到的错误是:

year=1899 is before 1900; the datetime strftime() methods require year >= 1900

我检查了比较结果,它按预期工作(1920 年以下的年份为假)。

简而言之,模型正在更新,并且错误没有在应该出现的时候出现。

最佳答案

这是 python 内置 strftime 函数的限制。它不支持 1900 年之前的日期。请尝试此操作

if birthdate.year < 1920:
raise forms.ValidationError(_("We don't accept people born before 1920"))

关于python - django 模型形式的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25901052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com