Как использовать внешние ключи в django?
Я не могу использовать внешний ключ в django. У меня есть сайт сети прокатных помещений, который предлагает книги. Я создал модель "Аренда" и модель "Книга", и я создал foreignkey для модели книги, чтобы она была привязана к арендному пространству. В панели администратора все работает как надо, но я не могу заставить его отображаться на сайте. Я хочу иметь несколько книг в арендном пространстве 1 и ни одной в арендном пространстве 2. Я не знаю, как управлять этим в views.py
мои модели :
class Rental (models.Model):
rental_name=models.CharField(max_length=50)
rental_number=models.IntegerField(default=0)
rental_adress=models.CharField(max_length=100, default='')
def __str__(self):
return "{} {}".format(self.id, self.rental_name)
class Book(models.Model):
# autor, tytul gatunek, isbn, id w wypozyczalni
book_author=models.CharField(max_length=50)
book_title = models.CharField(max_length=100)
book_isbn= models.CharField(max_length=17, unique=True)
BOOK_GENRE= (
('SF', "Sci-Fi"),
("ROM", "Romance"),
("HIS", "Historical"),
("HOR", "Horror"),
("THR", "Thriller"),
("BIO", "Biography"),
("KID", "For kids"),
("FAN", "Fantasy"),
)
book_genre=models.CharField(max_length=3, choices=BOOK_GENRE)
book_rental=models.ForeignKey(Rental, on_delete=models.CASCADE, default=1, related_name="display")
class Meta:
constraints =[
models.UniqueConstraint(fields=['book_author','book_title'], name='unique_book'),
]
мои взгляды:
class BookListView(ListView):
model = Book
template_name='book.html'
class BookDetailView(DetailView):
model = Book
template_name='book_detail.html'
class RentalListView(ListView):
model = Rental
template_name='rental_list.html'
class RentalDetailView(DetailView):
model = Rental
template_name='rental_detail.html
и мои html выглядят следующим образом:
<h1 style="font-size:11px; text-align:right;"><a href="{%url 'home' %}">Powrót do strony głównej</a></h1>
{% block content %}
{%for book in object_list%}
<div class="book-entry">
<h2><a href="{% url 'book_detail' book.pk %}">{{book.book_title}} {{book.book_genre}}</a></h2>
</div>
{% endfor %}
{% endblock content %}
При таком способе отображаются книги в обоих арендных помещениях, а не только в одном, в котором есть книги. Я понятия не имею, как это сделать по-другому, я работаю с django всего пару дней, и еще не все понимаю. Понятно, что html печатает все книги, какие только есть, но как сделать так, чтобы печатались только те, которые принадлежат арендованному пространству 1? Я следовал руководству, но оно привело меня только к этому пункту