Как получить все данные на основе данных поиска
Семья заказывает репетитора.
Шаг-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
Каким должен быть правильный способ поиска репетитора на основе предмета и оценки для бронирования на несколько дней?