Menu
CoddyTech

İlişkili Adlar

Coddy'nin Django Journey'sinin Modeller ve Yönetim Paneli bölümünün bir parçası. Ders 17 / 23.

Bir kitabın sayfasında yazarın diğer kitapları listelenebilir. Bu, yazardan kitaplarına geri gitmek anlamına gelir: ForeignKey her iki yönde de çalışır. Bir kitaba işaret eden Loan ile loan.book ileri gider; Django, geri dönüş yolu için Book'a modelin adının ardından _set eklenerek adlandırılan bir yönetici ekler: book.loan_set.all(). related_name buna daha iyi bir ad verir:

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

Artık book.loans.all() o kitabın ödünç kayıtlarını döndürür, book.loans.count() Loan.objects üzerindeki gibi çalışır ve loan_set artık mevcut değildir.

Şablonlar ilişkileri noktalarla izler ve yöntemleri parantez olmadan çağırır: {% for other in loan.book.loans.all %} ileri gider, ardından aynı kitabın tüm ödünç kayıtlarına geri döner. Yanlış yazılmış bir ad hiçbir şey göstermez ve hata da vermez; bu nedenle bir liste boş çıktığında önce adları kontrol edin.

challenge icon

Görev

Kolay
  • Book.author için geri dönüş adı olarak books değerini ver.
  • book_detail.html dosyasında, Geri bağlantısının üstüne More by Frank Herbert gibi bir <h2> ve o yazarın tüm kitaplarını listeleyen, her biri kendi sayfasına bağlantı veren bir <ul class="more"> ekle.

Run düğmesine bas ve bir kitabın sayfasını aç.

Kendin dene

{% 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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Modeller ve Yönetim Paneli bölümündeki tüm dersler

Kendi başına pratik yap: Django playground