Джанго: Как получить объект поверх объекта, связанного с иностранными ключами - PullRequest
0 голосов
/ 17 апреля 2019

Я делаю веб-приложение с Django.На данный момент я немного застрял с DetailViews и отображаю данные из разных моделей относительно внешних ключей.

Для примера у меня есть следующие модели:
- Библиотека
- Книга (относится кБиблиотека)
- Страница (относится к книге)

На данный момент у меня есть DetailView с моделью Book.
Мне удалось получить доступ к книге с помощью "_set.all".
СейчасМне также нужно получить доступ к странице этой книги.

Models.py:

class Library(models.Model):
    name = models.CharField(max_length=50)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

class Book(models.Model):
    title = models.IntegerField()
    library = models.ForeignKey(Library, on_delete=models.CASCADE)

class Page(models.Model):
    content= models.CharField(max_length=50000)
    book = models.ForeignKey(Book, on_delete=models.CASCADE)

Views.py

class TableDetailView(User, LoginRequiredMixin, DetailView):
    model = Library
    template_name = 'library/table.html'
    context_object_name = 'library'

table.html

<ul>
    {% for book in library.book_set.all %}
        <li>{{ book.title }}</li>
    {% endfor %}
</ul>
<!-- Works until here -->
<ul>
    {% for page in library.book.page_set.all %}
        <li>{{ page.content }}</li>
    {% endfor %}
</ul>

Как я могу получить содержимое страницы, отображаемой в моем представлении?Спасибо за любую помощь <3 </p>

1 Ответ

0 голосов
/ 17 апреля 2019

library.book не является правильным отношением.Для варианта использования, который вы пытаетесь реализовать,

<ul>
    {% for book in library.book_set.all %}
        <li>{{ book.title }}
            <ul>
                {% for page in book.page_set.all %}
                    <li>{{ page.content }}</li>
                {% endfor %}
            </ul>
        </li>
    {% endfor %}
</ul>
...