【发布时间】:2016-01-25 19:47:34
【问题描述】:
我的目标
- 一个在表格中列出我所有更新(模型)的网站
- 不要一次显示所有模型(分页 - 每页可能 10 个)
- 对列表进行过滤和排序
我的想法
- 我可以使用 ListView 来获取我所有的更新
- 使用 paginate_by = 10
- 在我的 QuerySet 中使用表单设置 order_by 或过滤器
我的问题
我不知道如何添加一个表单来修改我的 QuerySet 过滤器和排序。我的想法是使用额外的过滤器和 order_by 修改 get_queryset 中的查询。
我的观点
class MyView(ListView):
model = Update
template_name = "updates/update.html"
paginate_by = 10
def get_queryset(self):
return Update.objects.filter(
~Q(state=Update.STATE_REJECTED),
~Q(state=Update.STATE_CANCELED),
~Q(state=Update.STATE_FINISHED),
).order_by(
'planned_release_date'
)
我的想法
类似的东西。我知道它不是这样工作的......只是为了说明
class MyView(ListView):
model = Update
template_name = "updates/update.html"
paginate_by = 10
def post(self, request, *args, **kwargs):
new_context = Update.objects.filter(
request.POST.get("filter"),
).order_by(
request.POST.get("sorting"),
)
def get_queryset(self):
return Update.objects.filter(
~Q(state=Update.STATE_REJECTED),
~Q(state=Update.STATE_CANCELED),
~Q(state=Update.STATE_FINISHED),
).order_by(
'planned_release_date'
)
【问题讨论】:
标签: django forms sorting listview filter