我认为它应该更简单,但这是我基于函数的过滤器视图
def withSub(request):
post = Post.objects.filter(with_or_without_sub='WS')
paginator = Paginator(post, 2)
page = request.GET.get('page')
post = paginator.get_page(page)
content_dict = {
'posts':post,
'paginator':paginator
}
return render(request, 'community/withSub.html', content_dict)
我只是想以以下格式将其切换到基于类的视图,我只想像在函数视图中一样将过滤器放入Post模型中
class PostListView(ListView):
model = Post
template_name = 'community/home.html' # <app>/<model>_<viewtype>.html
答案 0 :(得分:0)
可能类似于以下内容。您可能需要测试和调试。使用equest.GET
就可以了。
from django.views.generic.list import ListView
class PostListView(ListView):
model = Post
template_name = 'community/home.html' # <app>/<model>_<viewtype>.html
def get(self, request, *args, **kwargs):
post = Post.objects.filter(with_or_without_sub='WS')
paginator = Paginator(post, 2)
page = request.GET.get('page')
post = paginator.get_page(page)
content_dict = {
'posts':post,
'paginator':paginator
}
context = self.get_context_data()
context.update(content_dict)
return self.render_to_response(context)
答案 1 :(得分:0)
如果要自定义查询集,请使用queryset
属性:
class PostListView(ListView):
queryset = Post.objects.filter(with_or_without_sub='WS')
template_name = 'community/home.html'
答案 2 :(得分:0)
您可以设置一个特定的查询集,如下所示:
queryset = Post.objects.filter(with_or_without_sub='WS')
或者如果最终涉及到更复杂的逻辑,则可以覆盖视图的get_queryset()
方法,如下所示:
from django.views.generic.list import ListView
class PostListView(ListView):
model = Post
template_name = 'community/home.html'
def get_queryset(self):
return Post.objects.filter(with_or_without_sub='WS', ...)