首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预约管理系统(预约次数限制)

预约管理系统(预约次数限制)
EN

Stack Overflow用户
提问于 2020-11-25 22:40:19
回答 1查看 26关注 0票数 0

我目前正在尝试添加限制,以确定客户可以预订的日期和时间。

示例..我的一天早上8点开始,所以我只想从早上8点开始预订。客户想要从早上7点到8点预订一个位置,那么他们应该会收到一个错误消息,说“只能预订上午8点到晚上7点”。

目前,我已经完成了以下代码:

代码语言:javascript
复制
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的格式添加到验证函数中?

我也不想让客户在过去预订。有没有一种方法可以同时在函数中这样做,或者我必须创建一个单独的函数?

感谢所有能帮助我的人

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 03:16:59

所以我想通了,我放弃了验证它的想法。我有一个可用性功能,它将允许预订它花了很长时间,但它是字面上:

代码语言:javascript
复制
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)

从字面上讲,只是添加了逻辑,它现在运行良好,没有人可以预订前几天。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65006860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档