Поскольку я делаю онлайн-систему бронирования по мини-футболу, в настоящее время я проверяю временной интервал. Если временной интервал уже зарезервирован, пользователь не сможет снова зарезервировать этот временной интервал.
models.py
class futsals(models.Model):
futsal_name = models.CharField(max_length=20)
futsal_address = models.CharField(max_length=40)
owner_email = models.EmailField(max_length=25)
owner_name = models.CharField(max_length=25)
def __str__(self):
return f'{self.futsal_name}'
class timeslot(models.Model):
timesslot = models.CharField(max_length=15)
name = models.CharField(max_length=15)
def __str__(self):
return f'{self.timesslot}'
class Booking(models.Model):
user_book = models.ForeignKey(User, on_delete=models.CASCADE)
futsal = models.ForeignKey(futsals, on_delete=models.CASCADE)
time_slot = models.ForeignKey(timeslot, on_delete=models.CASCADE)
def validate_date(date):
if date < timezone.now().date():
raise ValidationError("Date cannot be in the past")
booking_date = models.DateField( default=None, validators=[validate_date])
def __str__(self):
return f'{self.user_book}'
forms.py
def timeslot_validation(value):
v = Booking.objects.all().values_list('time_slot')
k = timeslot.objects.filter(pk__in=v)
if value == k:
raise forms.ValidationError("This timeslot is already booked!!")
else:
return value
Но я не могу выполнить проверку. Поскольку вывод переменной 'k' выглядит следующим образом:
<QuerySet [<timeslot: 19:00 - 20:00>, <timeslot: 18:00 - 19:00>, <timeslot: 17:00 - 18:00>]>
Показанный выше временной интервал является временным интервалом, зарезервированным пользователями. Теперь, если другой пользователь вводит этот временной интервал, он должен показать, что этот временной интервал уже зарегистрирован.
Теперь я хочу, чтобы эти данные отображались как [(19:00 - 20:00), (18:00 - 19:00), (17:00 - 18:00)]
Буду признателен за любую помощь, или, если кто-нибудь сможет предоставить мне лучшее решение для проверки?