我目前正在尝试添加限制,以确定客户可以预订的日期和时间。
示例..我的一天早上8点开始,所以我只想从早上8点开始预订。客户想要从早上7点到8点预订一个位置,那么他们应该会收到一个错误消息,说“只能预订上午8点到晚上7点”。
目前,我已经完成了以下代码:
class AvailabilityForm(forms.Form):
check_in = forms.DateTimeField(required=True, input_formats=['%m/%d/%Y %H:%M', ])
check_out = forms.DateTimeField(required=True, input_formats=['%m/%d/%Y %H:%M', ])
def validate_checkin_time(check_in_time):
if check_in_time <= 5.59 or check_in_time >= 7.00:
raise ValidationError("Check in times must be between 6:00AM and 7:00PM")
def validate_checkout_time(check_out_time):
if check_out_time <= 6.59 or check_out_time >= 8.00:
raise ValidationError("Check in times must be between 7:00AM and 8:00PM")
class Booking(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
check_in = models.DateTimeField(validators=[validate_checkin_time])
check_out = models.DateTimeField(validators=[validate_checkout_time])我的第一个问题是..我在这里使用验证是正确的吗?
所以看起来,我不认为if语句是正确的,但我不完全确定如何纠正它们。另外,我是否必须以某种方式将datetime的格式添加到验证函数中?
我也不想让客户在过去预订。有没有一种方法可以同时在函数中这样做,或者我必须创建一个单独的函数?
感谢所有能帮助我的人
发布于 2020-11-26 03:16:59
所以我想通了,我放弃了验证它的想法。我有一个可用性功能,它将允许预订它花了很长时间,但它是字面上:
from django.utils import timezone #NEW
now = timezone.now() #NEW
def check_availability(check_in, check_out, session):
avail_list = []
booking_list = Booking.objects.filter(session=session)
for booking in booking_list:
if booking.check_in > check_out and booking.check_in > now or booking.check_out < check_in: #NEW
avail_list.append(True)
else:
avail_list.append(False)
return all(avail_list)从字面上讲,只是添加了逻辑,它现在运行良好,没有人可以预订前几天。
https://stackoverflow.com/questions/65006860
复制相似问题