שמות קשורים
חלק מהיחידה מודלים וממשק הניהול במסלול ה-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, מעל הקישור לחזרה, הוסף<h2>כמו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 %}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מודלים וממשק הניהול
תרגלו בעצמכם: Django אונליין