首页 > 解决方案 > 如何从详细视图传递到表单外键字段?

问题描述

我有汽车的详细视图和预订href 到预订表格的btn。我想通过那辆显示细节的汽车。而不是我总是从外键下拉汽车选择中选择。

标签: pythondjangodjango-class-based-views

解决方案


在汽车详细视图中放置:

<a href="{% url 'car_booking' %}?car={{ car.id }}">Booking Now</a>

然后鉴于汽车预订:

class BookingView(FormView):
    template_name = 'car/booking.html'
    form_class = BookingForm

    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)

    # if you still want to keep select car in form,and auto select this car do as:
    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

网址可能喜欢:

path('booking/', BookingView.as_view(), name='car_booking'),

推荐阅读