Динамический выбор поля времени в формах django
Я работаю над проектом веб-сайта для резервирования футбольных полей с помощью Django.
В проекте у меня есть 3 модели: футбольное поле (название, адрес), команда (информация о капитане команды) и резервация (футбольное поле, команда, дата и время резервирования):
class Team(models.Model):
team_name = models.CharField('Team Name', max_length=60)
captain_first_name = models.CharField('Captain Name',max_length=30)
captain_second_name = models.CharField('Captain Second Name', max_length=30)
captain_email = models.EmailField('User Email', blank = True)
captain_phone = models.CharField('Captain Phone', max_length=9)
def __str__(self):
return self.team_name
class Football_Field(models.Model):
name = models.CharField('Field name', max_length=120)
address = models.CharField('Field address', max_length=120)
def __str__(self):
return self.name
class Reservation(models.Model):
team = models.ForeignKey(Team, blank = True, on_delete = PROTECT)
football_field = models.ForeignKey(Football_Field, blank = True, on_delete = PROTECT)
reservation_date = models.DateField('Reservation Date')
reservation_time = models.TimeField('Reservation Time', default=dt.time(00, 00))
Я также создаю форму бронирования, например, так:
class ReservationForm(ModelForm):
class Meta:
model = Reservation
fields = "__all__"
labels = {
'team': 'Select your team',
'football_field': 'Select football field',
'reservation_date': 'Select reservation date',
'reservation_time': 'Select time of reservation'
}
widgets = {
'team' : forms.Select(attrs={'style': 'width:500px', 'class': 'form-select'}),
'football_field' : forms.Select(attrs={'style': 'width:500px', 'class': 'form-select'}),
'reservation_date' : forms.DateInput(attrs={'class': 'form-control', 'style': 'width:200px', 'type': 'date'}),
'reservation_time': forms.Select(choices=HOUR_CHOICES, attrs={'format':'%H', 'class': 'form-control', 'style': 'width:200px', 'type': 'time', 'required step':"3600"})
}
Проблема в том, как связать выбор поля времени в форме с выбранными football_field
и reservation date
(чтобы не отображать время, которое уже забронировано). Моя идея была в том, чтобы динамически фильтровать choices
в reservation_time
на основе выбранных полей и бронирований в моей базе данных, но не уверен, что это возможно.
Я буду очень благодарен за любые предложения или советы.