如何在get_context_data中执行两个相关的数据库查询,即使用" request"?

时间:2015-10-27 14:01:22

标签: python mysql django django-class-based-views

我需要执行两个数据库查询,即

select * from books

select * from chapters where book_id=id

在UI上我需要有一个书籍列表(我可以通过第一个查询获得),点击任何一本书,我想用它的id来获取所有章节(来自第二个查询)。 我正在尝试创建基于类的视图(模板视图),并在如何在get_context_data()中执行这两个查询时遇到问题。我尝试使用request.GET.get但失败了。 谁能请你帮忙。

我想拥有例如。

的用户界面
Book 1
   chapter 1
   chapter 2
Book 2 
Book 3

1 个答案:

答案 0 :(得分:0)

有多种方式,最简单的方法是:

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

假设一些模型/视图名称:

<强> models.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

<强> views.py

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

<强> bookdetails.html

toString()