我有一个这样的列表视图:
from django.views.generic import ListView
class SomeListView(ListView):
def get_queryset(self):
qs = super(SomeListView, self).get_queryset()
limit = self.request.GET.get('limit', None)
if limit:
return qs[:limit]
return qs
现在这是处理切片功能的理想解决方案,因为
有没有更好的方法通过GET对QuerySets进行切片?
答案 0 :(得分:2)
您可以使用表单处理所有验证内容并设置默认值以限制字段。我做了一个表格
class SliceForm(forms.Form):
limit = forms.IntegerField(min_value=1)
然后在你的视图中使用它
def get_queryset(self):
qs = super(...).get_queryset()
form = SliceForm(self.request.GET)
if form.is_valid():
return qs[:form.cleaned_data['limit']]
else:
return qs