Как получить все данные на основе данных поиска

Семья заказывает репетитора.

Шаг-1: Семья будет искать репетитора по предмету и датам, в которые семья хочет заниматься со своими детьми с учителем.

Шаг-2: Нужно показать всех репетиторов по этому предмету на те дни, которые еще не забронированы.

class TutorProfile(models.Model):

user = models.ForeignKey(
    settings.AUTH_USER_MODEL, on_delete=models.CASCADE)



which_grade = models.ForeignKey(
    Grade, on_delete=models.CASCADE, blank=True, null=True)
tutoring_subject = models.ForeignKey(
    TutoringSubject, on_delete=models.CASCADE, blank=True, null=True)

sat = models.BooleanField(default=False)
sat_time = models.CharField(
    _("Saturday Time:"), max_length=255, null=True, blank=True)
sun = models.BooleanField(default=False)
sun_time = models.CharField(
    _("Sunday Time:"), max_length=255, null=True, blank=True)
mon = models.BooleanField(default=False)
mon_time = models.CharField(
    _("Monday Time:"), max_length=255, null=True, blank=True)
tue = models.BooleanField(default=False)
tue_time = models.CharField(
    _("Tuesday Time:"), max_length=255, null=True, blank=True)
wed = models.BooleanField(default=False)
wed_time = models.CharField(
    _("Wednesday Time:"), max_length=255, null=True, blank=True)

thu = models.BooleanField(default=False)
thu_time = models.CharField(
    _("Thursday Time:"), max_length=255, null=True, blank=True)
fri = models.BooleanField(default=False)
fri_time = models.CharField(
    _("Friday Time:"), max_length=255, null=True, blank=True)

And the Booking Models is:

class Booking(models.Model):

user = models.ForeignKey(
    settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
book_day = models.CharField(
    _("Book Day"), max_length=255, null=True, blank=True)

book_time = models.CharField(
    _("Book Time"), max_length=255, null=True, blank=True)    


status = models.CharField(
    _("Status"), max_length=255, null=True, blank=True)

Код в файле viewset.py:

def get_queryset(self):
    subject_param = self.request.GET.get('subject')

    bookday = self.request.GET.get('book_day')
    grade = self.request.GET.get('grade')

    import ast
   
    li = list(bookday.split(","))
    print("Book Info:", li)
    from datetime import datetime
    for i in range(len(li)):

        print(li[i])
        day_name = datetime.strptime(li[i], "%d-%m-%Y").strftime("%A")

        print("Day Name:", day_name)

        search_booking = Booking.objects.filter(book_day=li[i])

        print(search_booking)

        if not search_booking:

            if day_name == "Wednesday":
                print("This is Wednesday")

                try:

                    result = TutorProfile.objects.filter(wed=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)
                   

            elif day_name == "Tuesday":
                try:

                    result = TutorProfile.objects.filter(tue=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)

            elif day_name == "Monday":
                try:

                    result = TutorProfile.objects.filter(mon=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)      

            elif day_name == "Sunday":
                try:

                    result = TutorProfile.objects.filter(sun=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)      


            elif day_name == "Saturday":
                try:

                    result = TutorProfile.objects.filter(sat=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)       

            elif day_name == "Thursday":
                try:

                    result = TutorProfile.objects.filter(thu=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)    

            elif day_name == "Friday":
                try:

                    result = TutorProfile.objects.filter(thu=1).all()
                    print(result)
                except Exception as e:
                    print('type is:', e.__class__.__name__)     

            else:
                result = TutorProfile.objects.all()


            return result 

Каким должен быть правильный способ поиска репетитора на основе предмета и оценки для бронирования на несколько дней?

enter image description here

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