Menu
CoddyTech

الأسماء المرتبطة

جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 17 من 23.

يمكن أن تعرض صفحة الكتاب كتب المؤلف الأخرى. وهذا يعني الانتقال من المؤلف إلى كتبه: يعمل ForeignKey في الاتجاهين. عند وجود Loan يشير إلى كتاب، ينتقل loan.book إلى الأمام، ويضيف Django مديرًا إلى Book للعودة، ويُسمّى باسم النموذج متبوعًا بـ _set: book.loan_set.all(). يمنحه related_name اسمًا أفضل:

book = models.ForeignKey(Book, on_delete=models.PROTECT, related_name="loans")

الآن تُرجع book.loans.all() قروض ذلك الكتاب، وتعمل book.loans.count() كما تعمل على Loan.objects، ولم يعد loan_set موجودًا.

تتبع القوالب العلاقات باستخدام النقاط، وتستدعي الطرق من دون أقواس: ينتقل {% for other in loan.book.loans.all %} إلى الأمام، ثم يعود إلى كل قرض للكتاب نفسه. الاسم المكتوب بشكل خاطئ لا يُظهر شيئًا، من دون أي خطأ، لذا عندما تظهر قائمة فارغة، تحقّق من الأسماء أولًا.

challenge icon

التحدي

سهل
  • امنح Book.author اسمًا للرجوع إليه هو books.
  • في book_detail.html، أضف فوق رابط الرجوع عنوانًا مثل More by Frank Herbert وعنصرًا من نوع <ul class="more"> يسرد كل كتاب لهذا المؤلف، بحيث يكون كل كتاب رابطًا إلى صفحته.

اضغط على Run وافتح صفحة أحد الكتب.

جرّب بنفسك

{% extends "books/base.html" %}

{% block title %}{{ book.title }}{% endblock %}

{% block content %}
<h1>{{ book.title }}</h1>
<p class="author">by {{ book.author }}</p>
<ul>
    <li>Published in {{ book.year }}</li>
    <li>Genre: {{ book.get_genre_display }}</li>
    <li>Price: {{ book.price }}</li>
</ul>
<p><a href="{% url 'books:home' %}">Back to the shelf</a></p>
{% endblock %}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس النماذج ولوحة الإدارة

تدرّب بنفسك: Playground لـ Django