İ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.
Görev
KolayBook.authoriçin geri dönüş adı olarakbooksdeğerini ver.book_detail.htmldosyasında, Geri bağlantısının üstüneMore by Frank Herbertgibi 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 %}
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