الأسماء المرتبطة
جزء من قسم النماذج ولوحة الإدارة في رحلة 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 %} إلى الأمام، ثم يعود إلى كل قرض للكتاب نفسه. الاسم المكتوب بشكل خاطئ لا يُظهر شيئًا، من دون أي خطأ، لذا عندما تظهر قائمة فارغة، تحقّق من الأسماء أولًا.
التحدي
سهل- امنح
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 %}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
تدرّب بنفسك: Playground لـ Django