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, מעל הקישור לחזרה, הוסף <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 %}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מודלים וממשק הניהול

תרגלו בעצמכם: Django אונליין