Powiązane nazwy
Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 17 z 23.
Na stronie książki można wyświetlić inne książki autora. Oznacza to przejście od autora z powrotem do jego książek: ForeignKey działa w obu kierunkach. Gdy Loan wskazuje na książkę, loan.book prowadzi w jedną stronę, a Django dodaje do Book menedżer do przejścia w drugą stronę, nazwany na podstawie modelu z dodanym _set: book.loan_set.all(). related_name pozwala nadać mu lepszą nazwę:
book = models.ForeignKey(Book, on_delete=models.PROTECT, related_name="loans")Teraz book.loans.all() zwraca wypożyczenia danej książki, book.loans.count() działa tak samo jak Loan.objects, a loan_set już nie istnieje.
W szablonach przechodzi się przez relacje za pomocą kropek, a metody wywołuje bez nawiasów: {% for other in loan.book.loans.all %} prowadzi w jedną stronę, a następnie z powrotem do wszystkich wypożyczeń tej samej książki. Błędnie wpisana nazwa nic nie wyświetla i nie powoduje błędu, więc gdy lista jest pusta, najpierw sprawdź nazwy.
Wyzwanie
Łatwy- Nadaj
Book.authornazwę zwrotnąbooks. - W pliku
book_detail.html, nad linkiem Powrót, dodaj element<h2>, na przykładMore by Frank Herbert, oraz element<ul class="more">zawierający listę wszystkich książek tego autora, z których każda będzie linkiem do swojej strony.
Naciśnij Run i otwórz stronę książki.
Spróbuj swoich sił
{% 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 %}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Modele i panel administracyjny
Poćwicz samodzielnie: Edytor online Django