gpt4 book ai didi

python - 不要提交超过 11 点的时间 :59 pm

转载 作者:行者123 更新时间:2023-11-30 21:57:56 25 4
gpt4 key购买 nike

我有一个表格,可以创建带有日期和时间的类(class)。我目前有验证器来确保不能使用过去的日期,这些验证器运行良好。然而,我无法想象验证器如何确保输入的时间不超过晚上 11:59 的工作方式。我包含了我想要实现的目标的一个片段(我知道它不能按其布局的方式工作,它只是提供上下文)。我将不胜感激任何帮助。

表单.py

def validate_date1(value):
if value < timezone.now():
raise ValidationError('Date cannot be in the past')

def validate_date2(value):
if value < timezone.now():
raise ValidationError('Date cannot be in the past')

def present_date1(value):
if value > '11:59 pm':
raise ValidationError('Time cannot be past 11:59 pm')

def present_date2(value):
if value > '11:59 pm':
raise ValidationError('Time cannot be past 11:59 pm')

class LessonForm(forms.ModelForm):
lesson_instrument = forms.ChoiceField(choices=instrument_list, widget=forms.Select(attrs={'class' : 'form-control', 'required' : 'True'}))
lesson_datetime_start = forms.DateTimeField(input_formats=['%Y-%m-%d %I:%M %p'], widget=forms.DateTimeInput(attrs={'class': 'form-control', 'placeholder':'YYYY-MM-DD Hour:Minute am/pm'}), validators=[validate_date1, present_date1])
lesson_datetime_end = forms.DateTimeField(input_formats=['%Y-%m-%d %I:%M %p'], required=False, widget=forms.DateTimeInput(attrs={'class': 'form-control', 'placeholder':'YYYY-MM-DD Hour:Minute am/pm'}), validators=[validate_date2, present_date2])
lesson_weekly = forms.BooleanField(required=False)

最佳答案

DateTimeField 的验证器将获得一个 datetime.datetime 对象,而不是字符串。

在这里,我们从日期时间中提取时间部分,并将其与我们的常量最后可能的时间进行比较。

import datetime

LAST_POSSIBLE_TIME = datetime.time(23, 59)

def validate_time(value):
if value.time() > LAST_POSSIBLE_TIME:
raise ValidationError('Time cannot be past 11:59 pm')

关于python - 不要提交超过 11 点的时间 :59 pm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104400/

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