Я пытаюсь сделать систему бронирования (для квартир). Идея состоит в том, что пользователи могут выбрать дату начала и дату окончания и забронировать квартиру, если она не забронирована.
У меня есть модель резервирования с датой начала и конца, которую я использую для определениядаты бронирования квартиры.
Пользователи JQuery Ui Date Picker (небольшой календарь), чтобы выбрать даты. «Недоступные» даты отображаются серым цветом. Вот как я это сделал:
<script type="text/javascript">
var unavailableDates = ['{{ reservation.all.0.start_date|date:"d-m-Y" }}', '{{ reservation.all.0.end_date|date:"d-m-Y" }}'];
console.log(unavailableDates);
function unavailable(date) {
dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
if ($.inArray(dmy, unavailableDates) == -1) {
return [true, ""];
} else {
return [false, "", "Unavailable"];
}
}
$(function () {
$("#datepicker").datepicker({
dateFormat: 'MM-dd-yy',
beforeShowDay: unavailable
});
});
</script>
Я использую ...
{{ reservation.all.0.start_date|date:"d-m-Y" }}
..., чтобы выделить дату в календаре серым цветом.
MyМодель бронирования выглядит следующим образом:
class Reservation(models.Model):
apartment = models.ForeignKey(Apartment, related_name='reservations',
on_delete=models.CASCADE, blank=True, null=True)
start_date = models.DateField(blank=True, null=True, unique=True)
end_date = models.DateField(blank=True, null=True, unique=True)
name = models.CharField(default="", max_length=200, unique=True)
def __str__(self):
return self.name
И, на мой взгляд, у меня есть:
def apartment_view(request, apartment_id):
reservation = Reservation.objects.filter(apartment__pk=apartment_id)
apartment = get_object_or_404(Apartment, pk=apartment_id)
context = {'apartment': apartment, }
form = ReservationForm()
if request.method == 'GET':
form = ReservationForm()
elif request.method == 'POST':
form = ReservationForm(request.POST)
if form.is_valid():
reservation = form.save(commit=False)
reservation.apartment = apartment
reservation.save()
form.save()
return HttpResponseRedirect('/booking/')
args = {}
args['form'] = form
args['apartment'] = context
args['reservation'] = reservation
return render(request, 'booking/apartment.html', args)
Так как мне нужно, чтобы мои бронирования были отфильтрованы до нужной квартиры.
У меня вопрос: как я могу запросить ВСЕ даты, связанные с квартирой, даты начала и окончания?
Поэтому мне нужны все даты для квартиры 1, затем все даты для квартиры2 ... и т. Д.
Я не уверен, что делать по этому поводу, я прошу прощения, если сообщение сбивает с толку.
Спасибо !!!