小编Roo*_*rle的帖子

Django ListView - 用于过滤和排序的表单

我的目标

  • 列出表中所有更新(模型)的站点
  • 不要一次显示所有模型(分页 - 每页10个)
  • 过滤并对列表进行排序

我的想法

  • 我可以使用ListView获取一组所有更新
  • 使用paginate_by = 10
  • 使用表单在我的QuerySet中设置order_by或filter

我的问题

我不知道如何使用过滤器和排序添加表单来修改我的QuerySet.我的想法是使用额外的filter和order_by修改get_queryset中的Query.

我的看法

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'
        )
Run Code Online (Sandbox Code Playgroud)

我的想法

像这样的东西.我知道这不是这样的工作......只是为了说明

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'
        )
Run Code Online (Sandbox Code Playgroud)

forms sorting django listview filter

14
推荐指数
3
解决办法
2万
查看次数

标签 统计

django ×1

filter ×1

forms ×1

listview ×1

sorting ×1