一个视图中的不同查询集

时间:2018-05-08 12:53:29

标签: python django

我正在尝试使用Django制作标准的博客文章Web应用程序。我在一个应用程序中有多个模型。我想在所有模型的几个帖子中显示一个索引,为此我需要在每个模型的视图中有多个查询集,我不知道该怎么做。

博客/ models.py

class topicone(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateTimeField()

    def __str__(self):
        return self.title


class topictwo(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateTimeField()

    def __str__(self):
        return self.title


class topicthree(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateTimeField()

    def __str__(self):
        return self.title

博客/ urls.py

urlpatterns = [

    path('', views.indeview.as_view(), name="indexview"),

    path('<int:pk>', DetailView.as_view(
        model = topicone,
        template_name = "blogs/topicone.html"
    )),
]

博客/ views.py

class indeview(ListView):
    model = topicone
    template_name = "blog/index.html"

    def get_queryset(self):
        return topicone.objects.all()
由于我在这里只使用一个模型,所以views.py是没用的。我尝试编写一个不从任何其他通用视图继承的独立视图,因此我可以创建不同的上下文并在视图中传递多个字典,但这似乎不起作用。这就是我试图解决的问题

blogone = topicone.objects.all()
blogdict = {
    'id': blogone
}

blogtwo = topictwo.objects.all()
blog2dict = {'id': blogtwo}

return render (request, 'blog/index.html', blogdict, blogtwo)

此视图仅显示来自一个模型blogtwo

的数据

1 个答案:

答案 0 :(得分:1)

您应该考虑以下内容:

blogone = topicone.objects.all()
blogtwo = topictwo.objects.all()

return render(request, 'blog/index.html', {'blogone': blogone, 'blogtwo': blogtwo})

由于渲染参数为requesttemplatecontext

参考:https://docs.djangoproject.com/en/2.0/topics/http/shortcuts/