我有两个模特。
class Category(models.Model):
title = models.CharField(max_length=60, unique=True)
def __unicode__(self):
return self.title
class Post(models.Model):
title = models.CharField(max_length=60, unique=True)
category = models.ForeignKey(Category)
#code
views.py
class PostList(ListView):
model = Post
def get_queryset(self):
queryset = Post.objects.all().\
select_related('category')
但是对于我的主页面,我还需要导航栏的所有类别。向get_queryset()添加类别的最佳方法是什么?
我尝试使用prefetch_related。
post = Post.objects.all().prefetch_related('category')
但我不了解如何获取所有类别。
这是正确的解决方案吗?
class PostList(ListView):
def get_queryset(self):
p = Post.objects.all().\
select_related('category') #like tag for each post
p.categories = Category.objects.all() #all categories for navbar
return p
或者Django有自己的方法来完成这项任务吗?
答案 0 :(得分:0)
我不明白这与select_related或prefetch_related有什么关系。这些都不会有助于获取与您的帖子无关的类别:正如其名称所暗示的那样,它们与获取相关项目有关,而不是与不相关的项目有关。
如果您需要所有类别,只需执行Category.objects.all()
。