发布
社区首页 >问答首页 >避免与django预订过去的约会

避免与django预订过去的约会
EN

Stack Overflow用户
提问于 2022-01-11 17:44:40
回答 1查看 216关注 0票数 -1

我已经创建了一个预约系统,但是我希望在它到达create预订对象之前避免任何过去的日期被预订,然后将其保存到数据库中。

这是我的views.py

BookingView类(视图):

代码语言:javascript
代码运行次数:0
复制
def get(self, request, *args, **kwargs):
    return render(request, "availability.html")

def post(self, request, *args, **kwargs):
    form = AvailabilityForm(request.POST)

    if form.is_valid():
        data = form. cleaned_data

    bookingList = Appointment.objects.filter(start__lt=data['end_time'], end__gt=data['start_time'])
    if not bookingList:
        booking = Appointment.objects.create(
            name=data["name"], 
            email=data["email"],
            start=data["start_time"],
            end=data["end_time"]
            )
        booking.save()
        return render(request, "success.html", {
            "booking":booking
        },)
    else:
        name = data["name"]
        return render(request, "booked.html",{
            "name":name, 
        },)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 18:20:39

您可以向日期字段添加一个额外的验证,如下所示:

代码语言:javascript
代码运行次数:0
复制
from django.utils import timezone


class AvailabilityForm(forms.Form): 
    # ... the fields

    def clean_start_time(self)
        start = self.cleaned_data.get('start_time')
        if start < timezone.now():
            raise forms.ValidationError('the date must be after now.')
        return data

可以在https://docs.djangoproject.com/en/4.0/ref/forms/validation/#cleaning-a-specific-field-attribute上获得更多信息

接下来,只需重写视图并将表单发送到模板即可显示这些错误,如本文档中所解释的:

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

https://stackoverflow.com/questions/70671189

复制
相关文章

相似问题

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