2015-10-27 1 views
0

мне нужно выполнить два запросов к базе данных, т.е.Как выполнить два связанных запроса базы данных в get_context_data i.e использовать «запрос»?

select * from books 

и

select * from chapters where book_id=id 

На UI мне нужно иметь список книг (которые я могу получить с первым запросом) и нажатием любая из книг, я хочу использовать свой идентификатор, чтобы получить все главы (из второго запроса). Я пытаюсь создать представление на основе класса (представление шаблона) и иметь проблемы с тем, как выполнять эти два запроса в get_context_data(). Я пробовал использовать request.GET.get, но не смог. Может ли кто-нибудь помочь.

Я хочу иметь пользовательский интерфейс, например.

Book 1 
    chapter 1 
    chapter 2 
Book 2 
Book 3 
+0

Второй запрос может извлечь выгоду из будучи Ajax вызова (с точки зрения функции на основе или даже DetailView в случае необходимости) – Sayse

ответ

0

Есть несколько способов, самый простой из них:

https://docs.djangoproject.com/en/1.8/topics/class-based-views/generic-display/#adding-extra-context

Предполагая, что некоторые Model/View имена:

models.py

class Book(model.Model): 
    title = CharField() 

class Chapter(model.Model): 
    book = ForeignKey(Book, related_name='chapters') 

views.py

class BookDetailView(DetailView): 
    model = Book 

    def get_context_data(self, **kwargs): 
     # Call the base implementation first to get a context 
     context = super(BookDetailView, self).get_context_data(**kwargs) 
     # Add in a QuerySet of all the books 
     context['all_books'] = Book.objects.all() 
     return context 

bookdetails.html

{{ object.title }} 
{% for chapter in object.chapters %} 
    {{ chapter.title }} 
{% endfor %} 
+0

это будет дайте мне только список книг, как я собираюсь получить идентификатор модели книг для запроса модели разделов. см. редактирование (для интерфейса, который мне нужен) –

+0

Пожалуйста, взгляните на мой обновленный ответ. Это предполагает некоторые вещи. DetailView автоматически предоставит вам контекст ['object'], который является вашим объектом Book. Главы находятся в объектах.chapters (через ForeignKey + related_name) – user1797792

 Смежные вопросы

  • Нет связанных вопросов^_^