2016-07-26 2 views
0

modelForm CreateView와 listView를 같은 페이지에 표시하는 방법. 기본적으로 사용자는 이름 등을 입력하여 대여를 예약하고 페이지 상단에는 페이지 하단에 차량 정보 (모델, 제조업체 등)가 표시됩니다.동일한 템플릿에 createview (model form)와 listview를 표시합니다 - Django

기반보기.

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

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

답변

0

당신은 당신의 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 %} 

또는 특히 사용자 지정 논리를 더 추가하려는 경우 대신보기에 함수를 사용할 수 있습니다. 클래스 기반 뷰는 훌륭하지만 크고 복잡해질 수 있습니다.