Если я вас правильно понимаю, вы хотите отобразить информацию о сотруднике, которая хранится в других моделях.
Я предполагаю, что вы знаете, что вы можете предварительно отфильтровать представление и отправить дополнительную контекстную переменную с помощьюнабор запросов.используя существующую строку extra_context ="EC_list": EmergencyContact.objects.all()
выбирает слишком много.Я предполагаю, что ваша модель EmergencyContact имеет внешний ключ для Employee (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 %}
Конечно, это только один способсделать это.если вам не нужны какие-либо необычные фильтры для экстренных контактов, вы можете использовать обратный поиск внешнего ключа в шаблоне.т.е. избавиться от extra_context для EC_list и заменить функцию рендеринга контактов следующим образом:
<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>
Помните, что у нас есть employee = ForeignKey(Employee, related_name='emergency_contacts')
в качестве внешнего ключа от EmergencyContact для Employee.это объявление не только добавляет поле сотрудника в EmergencyContact, но и добавляет дополнительное поле виртуальное для сотрудника с именем «emergency_contacts».это виртуальное поле возвращает набор запросов всех Экстренных контактов, связанных с текущим сотрудником.
Дайте мне знать, если у вас есть какие-либо вопросы или вам нужны ссылки на документацию
РЕДАКТИРОВАТЬ: для удобства чтения отправитель устанавливаетПараметр template_object_name универсального представления.
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>