Отобразить createview(модель) и listview в одном шаблоне - Django

Как отобразить ModelForm CreateView и A ListView на одной странице. по сути, я хочу, чтобы пользователи бронировали аренду, указав свое имя и т. д. и в верхней части страницы, а в нижней части страницы отобразили информацию об автомобилях (модель, марка и т. д.)

Я использую представления на основе классов.

class CustomerOrderCreate(CreateView):
    template_name = 'webapp/index.html'
    model = CustomerOrder
    form_class = CustomerOrderCreateForm  // This works 

    vehicleData = VehicleOrder.objects.all()  // This Does not

1 ответ

Вы можете продолжать использовать свой CreateView и добавить список в контексте, как это:

class CustomerOrderCreate(CreateView):
    template_name = 'webapp/index.html'
    model = CustomerOrder
    form_class = CustomerOrderCreateForm

    def get_context_data(self, **kwargs):
        return dict(
            super(CustomerOrderCreate, self).get_context_data(**kwargs),
            vehicle_orders=VehicleOrder.objects.all()[0:100]
        )

Затем в своем шаблоне вы можете сделать:

{% for order in vehicle_orders %}
    ...
{% endfor %}

В качестве альтернативы, особенно если вы собираетесь добавить больше пользовательской логики, вы можете вместо этого использовать функцию для своего представления. Классно-ориентированное представление великолепно, но может очень быстро стать большим / сложным.

Другие вопросы по тегам