У меня есть форма бронирования автомобиля.Форма перенаправляется в представление после сохранения.Представление выбирает идентификатор формы , т. Е. Экземпляр моей модели Reservation
, а затем выбирает конкретное транспортное средство из поля chosen_car
формы, а затем следует обновитьатрибут available
этого транспортного средства False
.
Теперь пользователь заказывает автомобиль на фиксированный период времени .Когда время истечет, я хочу, чтобы атрибут available
конкретного экземпляра транспортного средства в модели Vehicle
был установлен на True
.
Я попытался реализовать это, используя цикл while в виде, ноэто просто не работает.Я хочу, чтобы этот процесс был несколько автоматизирован , т. Е. Для экземпляра транспортного средства атрибут available
обновляется до False
, когда это транспортное средство зарезервировано, и обновляется до True
, когда время истекает.Таким образом, он становится доступным для других пользователей.
# My Vehicle model:
class Vehicle(models.Model):
car_no = models.CharField (max_length = 20, blank=False)
car_model = models.ForeignKey (Car_model, on_delete=models.CASCADE)
garage = models.ForeignKey (Garage, on_delete=models.CASCADE)
category = models.ForeignKey (Category, on_delete=models.CASCADE)
available = models.BooleanField(default=True)
# The Reservation model:
class Reservation(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
date_from = models.DateField(auto_now=False, auto_now_add=False, blank=False)
date_to = models.DateField(auto_now=False, auto_now_add=False, blank=False)
time_from = models.TimeField(auto_now=False, auto_now_add=False, blank=False)
time_to = models.TimeField(auto_now=False, auto_now_add=False, blank=False)
garage = models.ForeignKey(Garage,on_delete=models.CASCADE, blank=False, verbose_name="Start from")
destination=models.CharField(max_length=20, blank=False, verbose_name="Where will you go")
chosen_vehicle=models.CharField(max_length = 20, blank=False, default='')
booking_time=models.DateTimeField(default = datetime.now)
Представление, которое я использовал, чтобы установить для атрибута Vehile
модель available
каждого забронированного автомобиля значение True или False:
def carDBconfigView(request, pk):
this_form = Reservation.objects.get(pk = pk)
the_car = this_form.chosen_vehicle
v = Vehicle.objects.get(car_no = the_car)
v.available = False
v.save()
to = this_form.date_to
to_time = this_form.time_to
#while datetime.date.today() > to and datetime.datetime.now().time() > to_time: # tried this first
while datetime.datetime.now().time() > to_time:
while datetime.date.today() > to:
c = Vehicle.objects.get(car_no = the_car)
c.available = True
c.save()
return redirect('review')
Форма бронирования, которую я определил:
class NewReservationForm(forms.ModelForm):
class Meta:
model= Reservation
exclude = ['user','chosen_vehicle','garage','booking_time']
Как я могу установить для атрибута available
значение True
или False
на основе установленных дат, не всегда вручную настраивая каждый автомобильдо True
или False
?