2013-03-12 3 views
1

customerbuilding이라는 두 가지 모델이 있습니다. 이 두 모델을 사용하여 클래스 기반 일반 뷰를 사용하여 하나의 템플릿에서 일반적으로 볼 수있는 방법은 무엇입니까? 여기 django : 두 모델로 일반 뷰를 사용하는 방법

여기
urlpatterns = patterns('', 
url(r'^customer/', customerView.as_view(), name= "customer_view"), 
) 

view.py 고객을 위해 여기

class customerView(UpdateView): 
    template_name="customer.html" 
    model = customer 
    form_class = customerForm 

    def get_context_data(self, **kwargs): 
     context = super(customerView, self).get_context_data(**kwargs) 
     context['pk'] = 1 
     context['numberOfObjects'] = customer.objects.all().count() 
     return context 

    def get_object(self, queryset = None): 
     try: 
      obj = customer.objects.get(id = 1) 
     except: 
      obj = customer.objects.create(id = 1) 
     return obj 

    def form_valid(self, form): 

     form.save() 
     return HttpResponseRedirect(reverse("customer_view", kwargs={'pk': self.kwargs['pk']})) 

이 customer.html에 대한 코드의 일부입니다 내 고객이 볼 내 urls.py입니다 customerbuilding

<form action="" method="post"> 
{% csrf_token %} 

{{ form.id }} 
    <div class="text_label" >FIRST NAME</div> 
    <div class="text_input">{{ form.FIRST_NAME }}</div>  
    <div class="text_label" >LAST NAME</div> 
    <div class="text_input">{{ form.LAST_NAME }}</div>  

    <div class="text_label" >BUILDING USE</div> 
    <div class="text_input3">{{ form.BUILDING_USE }}</div></td>  
    <div class="text_label" >BUILDING FLOORSPACE</div> 
    <div class="text_input3">{{ form.BUILDING_FLOORSPACE }}</div></td>  
    <div class="text_label">BUILDING YEAR</div> 
    <div class="text_input3" >{{ form.BUILDING_YEAR }}</div></td></tr> 

rest of the code....//the first part is from the class customer and the second part is from the class building. 

제 문제는 일반 고객이 클래스 고객을 볼 수는 있지만 클래스 빌딩은 볼 수 없습니다. 나는 이것을 어떻게 성취합니까 ... 저는 여전히 장고에서 아마추어이고 여전히 선하게 될 수있는 방법입니다. 내가 멍청한 질문을하면 용서해주세요. How can I pass two models to a class based generic view에 체크인했으나 여전히 비어 있습니다. 도움을 많이 주셔서 감사합니다.

답변

0

get_context_data()에서 새 개체를 추가 할 수 있습니다.

context['building'] = building.objects.get(name="Building name") 

당신은 폼에서 사용 싶어하면, 동시에 제대로 두 가지 모델을 편집 할 많은 잔재주를 증명할이

{{ building.name }} 

처럼 템플릿을 호출 할 수 있습니다.

여기가 있습니다. a great SO post explaining why this is

+0

답장에 @limelights 감사합니다. 다시 물어서 죄송합니다. (name = "Monkey") 또는? 죄송합니다. 조금 혼란 스럽습니다. – noobes

+1

아니, 그저 예제 일 뿐이지 만 무언가를 필터링하거나 모든 건물을 원한다면 당신은'building.objects.all()'을한다. - 나는 내 대답을 업데이트했다. –

+0

네, 그렇게 많이 감사합니다. @ 주목할 것입니다. 지금 시도 할 것입니다. : D – noobes

관련 문제