Appointment Booker. Запрос данных

Я создал систему назначений с отдельными моделями даты и времени. Я столкнулся с некоторыми проблемами, пытаясь запросить данные, поскольку они разделены, а я хотел бы запросить их как день и время вместе. Какой лучший способ запросить это, чтобы я мог проверить, есть ли свободные места, когда пользователь отправляет форму.

models.py

class Appointment(models.Model):
    name = models.CharField(max_length=80)
    email = models.EmailField(max_length=254)
    start_date = models.DateField()
    start_time = models.TimeField()
    end_date = models.DateField()
    end_time = models.TimeField()

    def __str__(self):
        return f"{self.email}  {self.name} has booked {self.start_date} & {self.start_time} until {self.end_date} & {self.end_time}"

forms.py

class AvailabilityForm(forms.Form):
    name = forms.CharField(max_length=80, required=True)
    email = forms.EmailField(max_length=254, required=True)
    start_date = forms.DateField(required=True, input_formats=['%Y-%m-%d'])
    start_time = forms.TimeField(required=True, input_formats=["%H:%M"])
    end_date = forms.DateField(required=True, input_formats=['%Y-%m-%d'])
    end_time = forms.TimeField(required=True, input_formats=["%H:%M"])

views.py

class BookingView(View):


    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
        else:
            return render(request, "unsuccessful.html")
        
        **bookingListMax = Appointment.objects.filter(start_date__lt=data['end_date'], end_date__gt=data['start_date'])**

        if not bookingListMax:
            booking = Appointment.objects.create(
                name=data["name"], 
                email=data["email"],
                start_date=data["start_date"],
                start_time=data["start_time"],
                end_date=data["end_date"],
                end_time=data["end_time"],
                )
            booking.save()

*** это мой код проблемы

Вернуться на верх