У меня есть две модели, Автомобиль и Бронирование. Автомобиль - это поле ForeignKey в модели бронирования. Если автомобиль забронирован, он удаляется из списка автомобилей.
После того, как автомобиль забронирован, код меняется на is_available_car = false. И тогда автомобиль не отображается в списке автомобилей. но
Проблема, с которой я сталкиваюсь:
- После того как я удалил бронирование у администратора, автомобиль не отображается в виде списка. если бронирование автомобиля закрыто, я хочу сделать is_available_car = True. Кажется, я не могу изменить его с ложного на истинное.
- Я добавил фильтр запроса, чтобы сделать is_available_car = True. Проблема в том, что после того, как автомобиль возвращен и время бронирования закончено, мне приходится каждый раз вручную менять значение is_available_car = True.
Помогите мне, пожалуйста, если после завершения бронирования или я удалю бронирование, доступное значение автомобиля изменится на true !!
Это мои модели и виды:
Модель
class Booking(models.Model):
booking_name = models.CharField(max_length=240, null=False)
customer_name = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='book_customers' )
book_car = models.ForeignKey(Car, on_delete=models.CASCADE, related_name='book_car')
rental_price = models.IntegerField(blank=False, null=False)
times_pick = models.TimeField(blank=True)
is_approved = models.BooleanField(default=False)
def __str__(self):
return self.booking_name
def get_absolute_url(self):
return reverse("buggy_app:detail",kwargs={'pk':self.pk})
class Car(models.Model):
reg_no = models.CharField(max_length=16, unique=True)
model_year = models.DateField()
car_name =models.CharField(max_length=40)
car_image = models.ImageField(upload_to='cars', blank = True)
is_available_car = models.BooleanField(default = False)
def __str__(self):
return self.car_name
def get_absolute_url(self):
return reverse("buggy_app:details",kwargs={'pk':self.pk})
Просмотры
class BookingView(FormView):
template_name = 'buggy_app/booking.html'
form_class = BookingForm
models = Booking
def form_valid(self, form):
car_id = self.request.GET.get('car', '')
car = Car.objects.get(id=car_id)
car.is_available_car = False
car.save()
form.save()
return super(BookingView, self).form_valid(form)
success_url = reverse_lazy('index')
def get_context_data(self, **kwargs):
# kwargs['car'] is the car booking now!
try:
kwargs['car'] = Car.objects.get(id=self.request.GET.get('car', ''))
except (Car.DoesNotExist, ValueError):
kwargs['car'] = None
return super(BookingView, self).get_context_data(**kwargs)
class CarListView(ListView):
context_object_name = 'cars'
model = models.Car
def get_queryset(self):
qs = super(CarListView, self).get_queryset()
qs = qs.filter(is_available_car=True)
return qs