В моем приложении пользователь назначает встречу. Он / она выбирает дату, и каждая дата имеет фиксированные часы встречи, такие как: 14:00, 15:00, 16:00, 17:00 и 18:00. Эти часы должны быть выбраны из поля выбора сразу после выбранной даты. Итак, я хочу заполнить поле выбора часами, когда выбрана дата. Но проблема в том, что я не знаю, с какой технологией мне это делать: с Django или AJAX. Вот мои коды:
примечание: я могу оставить все как есть, но если, например, 14:00 в 03.02.2020 выбрано пользователем, для других этот час в 03.02.2020 должен быть отключен .
models.py
:
class MeetingHour(models.Model):
hour = models.TimeField()
def __str__(self):
return str(self.hour)
class Meeting(models.Model):
participant_name = models.CharField(max_length=50)
participant_email = models.EmailField(max_length=50)
meeting_date = models.DateField()
meeting_hour = models.ForeignKey(MeetingHour, on_delete = models.CASCADE)
is_scheduled = models.BooleanField(default=False)
def __str__(self):
return self.participant_name
views.py
:
def index(request):
context = {
'meetings': Meeting.objects.all(),
'meetinghours': MeetingHour.objects.all()
}
if request.method == "POST":
meeting_date = str(request.POST.get('date'))
meeting_hour = str(request.POST.get('hour'))
converted_meeting_date = datetime.strptime(request.POST.get('date'), "%m/%d/%Y").date() if meeting_date else None
converted_meeting_hour = datetime.strptime(request.POST.get('hour'), "%H:%M:%S").time() if meeting_hour else None
hour, _ = MeetingHour.objects.get_or_create(hour = converted_meeting_hour)
Meeting.objects.create(
meeting_date = converted_meeting_date,
meeting_hour = hour,
is_scheduled = True
)
return render(request, 'index.html', context)
html
:
<form method="POST" action={% url 'index' %}>
<div class="form-group">
<label for="date">Date</label><br />
<input name="date" id="date" placeholder="Select date">
</div>
<div class="form-group">
<label for="hour">Hour</label><br />
<select name="hour" id="hour">
{% for meetinghour in meetinghours %}
<option value="{{meetinghour}}">{{ meetinghour.hour|time:"H:i" }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<button type="submit">Save</button>
</div>
</form>