Как показать пользователю только доступное поле модели? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть две модели автомобиля и бронирование.Автомобиль является полем ForeignKey в модели бронирования, если автомобиль забронирован, то в списке автомобилей он все еще отображается доступным.У меня есть поле модели is_available_car в модели автомобиля default=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')
    booking_start_date = models.DateTimeField(auto_now_add=True, blank=False)
    booking_end_date = models.DateTimeField(blank=True, null=True)
    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})

Просмотров .py

class BookingView(FormView):
 template_name = 'buggy_app/booking.html'
 form_class = BookingForm
 models = Booking
 def form_valid(self, form):
    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)

def get_initial(self):
    initial = super(BookingView, self).get_initial()
    if 'car' in self.request.GET:
        try:
            initial['book_car'] = Car.objects.get(id=self.request.GET['car'])
        except (Car.DoesNotExist, ValueError):
            pass
    return initial

 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

1 Ответ

0 голосов
/ 12 июня 2018

По вашему мнению, получив запрос на бронирование, получите идентификатор Car и измените его атрибут is_available_car:

views.py

class BookingView(FormView):
    ...
    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)

и в списке автомобилей, который выследует фильтровать автомобили, которые имеют is_available_car=False

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...