Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy
  • Nadaj Book.author nazwę zwrotną books.
  • W pliku book_detail.html, nad linkiem Powrót, dodaj element <h2>, na przykład More 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 %}
quiz iconSprawdź się

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