2010-11-25 3 views
0

내 데이터베이스에있는 사용자 목록을 만들고 있는데, 일반 뷰를 사용하여 user_list.html 템플릿에 표시되지만 내 모델은 다른 클래스의 해당 속성 중 많은 부분을 상속받습니다 모델에서. 이제 사용자가 자신의 이름을 클릭하면 user_detail.html 페이지로 리디렉션되어야하며 여기에서 그의 세부 정보를 받아야합니다. 세부 정보는 데이터베이스에서 선택되며, 쿼리 세트가 정의 된 동일한 모델에서 값을 선택하는 것입니다.목록을 사용하여 템플릿 채우기, 세부 일반 뷰

from contacts.views import employees 

    urlpatterns = patterns('', 
     url(r'^$', 
      employees.employee_list, 
      name='contacts_employee_list'), 
     url(r'^(?P<employee_id>\d+)/$', 
      employees.employee_detail, 
      name='contacts_employee_detail'), 

내 employee_deatil.html이

{% block title %} Employee details {% endblock %} 
    {% block heading1%}<h1> Employee's Details </h1>{% endblock %} 
    {% block right_menu %} 
     {% if object %} 
     <ul> 
      <li> Name:{{ object.full_name }}</li> 
      <li> Contact No.: {{ object.phone_number }}</li> 
     <!-- <li> Refrence Contact No.: {{ EC_list.contact }}</li> --> 
      <li> Blood Group: {{ object.blood_type }}</li> 
      <li> Martial Status: {{ object.martial_status }}</li> 
      <li> Nationality: {{ object.about }}</li> 
      <!-- <li> Relationship: {{ EC_list.relationship }}</li> 
      <li>Course: {{ object.course }}</li> --> 
     </ul> 
     {% else %} 
      No Registered user present. 
     {% endif %} 
    {% endblock %} 

과 같은 urls.py

from django.contrib.auth.models import User 
    from django.shortcuts import render_to_response, get_object_or_404 
    from django.views.generic.list_detail import object_list, object_detail 

    from contacts.models import * 

    def employee_list(request, queryset=None, **kwargs): 
     if queryset is None: 
      queryset = Employee.objects.all() 
     return object_list(
      request, 
      queryset=queryset, 
      paginate_by=20, 
      **kwargs) 

    def employee_detail(request, employee_id): 
     return object_detail(
      request, 
      queryset= Employee.objects.all(), 
     # extra_context ={"EC_list": EmergencyContact.objects.all()}, 
      object_id=employee_id) 

처럼

내 views.py는 어떻게 할 수 있음을 알아 내기 위해 좀 도와주세요 보인다 다른 모델에있는 직원의 모든 데이터를 표시합니다. 고맙습니다!

+2

코드에 줄 번호를 포함하지 않는 것이 좋습니다. 그들을 제거해야합니다. – pyfunc

+0

당신의 문제는 무엇입니까? 현재 작동하지 않는 것은 무엇입니까? 당신은 무엇을보고 싶어합니까? 그리고 당신은 무엇을보고 있습니까? –

+0

Hello buddy 데이터베이스 모델에서 사용할 수있는 모든 세부 정보로 템플릿을 채우고 싶습니다. 내 모델에는 Foreignkey 등의 관계가 있으며 다른 모델과 외래 키 관계가있는 모델의 특성을 표시 할 수 없습니다. – Prateek

답변

0

정확하게 이해하면 다른 모델에 저장된 직원에 대한 정보를 표시하려고합니다.

내가보기에서 미리 필터링하고 쿼리 세트로 추가 컨텍스트 변수를 보낼 수 있다는 것을 알고 있다고 가정합니다. 기존 라인을 사용하여 extra_context ="EC_list": EmergencyContact.objects.all()이 너무 많습니다. EmergencyContact 모델에 직원 외래 키가 있다고 가정합니다. (employee = ForeignKey(Employee, related_name='emergency_contacts')). 이 경우 여분의 컨텍스트를 필터링해야합니다.

def employee_detail(request, employee_id): 
    return object_detail(
     request, 
     queryset= Employee.objects.all(), 
     extra_context ={"EC_list": EmergencyContact.objects.filter(employee__pk=employee_id)}, 
     object_id=employee_id) 

이렇게하면 필요한 긴급 연락처로만 목록이 필터링됩니다.

{% block title %} Employee details {% endblock %} 
{% block heading1%}<h1> Employee's Details </h1>{% endblock %} 
{% block right_menu %} 
    {% if object %} 
     <ul> 
     <li> Name:{{ object.full_name }}</li> 
     <li> Contact No.: {{ object.phone_number }}</li> 
     <li> Blood Group: {{ object.blood_type }}</li> 
     <li> Martial Status: {{ object.martial_status }}</li> 
     <li> Nationality: {{ object.about }}</li> 
     <li> Course: {{ object.course }}</li> 
     <li> Emergency Contacts: 
      <ul> 
      {% for EC in EC_list %} 
      <li> Name: {{ EC.name }} </li> 
      <li> Contact No.: {{ EC.contact }}</li> 
      <li> Relationship: {{ EC.relationship }}</li> 
      {% endfor %} 
      </ul> 
     </li> 
    </ul> 
    {% else %} 
     No Registered user present. 
    {% endif %} 
{% endblock %} 

물론 이것은이를 수행하는 한 가지 방법 일뿐입니다. 응급 연락처에 고급 필터가 필요하지 않은 경우 서식 파일에서 외래 키 역방향 조회를 사용할 수 있습니다. 즉 EC_list에 대한 extra_context을 없애이와 접촉 렌더링 기능을 대체 :

 <li> Emergency Contacts: 
      <ul> 
      {% for EC in object.emergency_contacts %} 
      <li> Name: {{ EC.name }} </li> 
      <li> Contact No.: {{ EC.contact }}</li> 
      <li> Relationship: {{ EC.relationship }}</li> 
      {% endfor %} 
      </ul> 
     </li> 

우리가 직원에 EmergencyContact에서 외래 키로 employee = ForeignKey(Employee, related_name='emergency_contacts')을 기억하십시오. 이 선언은 직원 필드를 EmergencyContact에 추가 할뿐만 아니라 가상 필드를 Employee에 'emergency_contacts'라는 이름으로 추가합니다. 이 가상 필드는 현재 직원에게 연결된 모든 긴급 연락처의 쿼리 세트를 반환합니다. 일반보기의 template_object_name 매개 변수를 설정 considder, 가독성을 위해 :

당신이 어떤 질문이 나 문서에 대한 링크

편집이 필요하면 알려주세요.

def employee_detail(request, employee_id): 
    return object_detail(request, queryset= Employee.objects.all(), 
        object_id=employee_id, template_object_name='employee') 

------------------------------------------------------------------------------------------ 

     <li> Name: {{ employee.full_name }}</li> 
     <li> Emergency Contacts: 
      <ul> 
      {% for EC in employee.emergency_contacts %} 
      <li> Name: {{ EC.name }} </li> 
      <li> Contact No.: {{ EC.contact }}</li> 
      <li> Relationship: {{ EC.relationship }}</li> 
      {% endfor %} 
      </ul> 
     </li> 
+0

멋진 답변을 주셔서 감사합니다. 정말로, ...,,, 그리고이 기사에 대한 링크를 보내 주시면 감사하겠습니다 ... 012 ......... – Prateek

+0

안녕하세요. 그 자체로 다른 클래스의 외래 키인 속성을 표시하여 템플릿에서 호출하는 방법을 보여주고 싶습니다. 예제 : EmergencyContact에 contact = models.ForeignKey (Person, verbose_name = _ ('contact'), related_name = 'emergency_contact_to')이 클래스 Person은 phone_number = generic.GenericRelation ('PhoneNumber')과 같은 다른 클래스를 가리키는 phone_number 속성을 가지고 있습니다. 전화 번호에 액세스 할 수 없습니다. 어떻게 템플릿에 표시 할 수 있습니까? – Prateek

+0

관련 모델 정의를 게시 할 수 있습니까? – Thomas

관련 문제