Nomi correlati
Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 17 di 23.
La pagina di un libro potrebbe elencare gli altri libri dell'autore. Questo significa passare dall'autore ai suoi libri: una ForeignKey funziona in entrambe le direzioni. Con un Loan che punta a un libro, loan.book va in avanti e Django aggiunge a Book un manager per il percorso inverso, chiamato con il nome del modello seguito da _set: book.loan_set.all(). related_name permette di dargli un nome migliore:
book = models.ForeignKey(Book, on_delete=models.PROTECT, related_name="loans")Ora book.loans.all() restituisce i prestiti di quel libro, book.loans.count() funziona come su Loan.objects e loan_set non esiste più.
I template seguono le relazioni con i punti e chiamano i metodi senza parentesi: {% for other in loan.book.loans.all %} va in avanti, poi torna indietro a tutti i prestiti dello stesso libro. Un nome scritto male non mostra nulla e non dà errori, quindi, quando una lista risulta vuota, controlla prima i nomi.
Sfida
Facile- Assegna a
Book.authoril nome inversobooks. - In
book_detail.html, sopra il link Indietro, aggiungi un<h2>comeMore by Frank Herberte un<ul class="more">che elenchi tutti i libri di quell’autore, ciascuno collegato alla propria pagina.
Premi Esegui e apri la pagina di un libro.
Provalo tu
{% 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 %}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Modelli e pannello di amministrazione
Esercitati da solo: Playground Django