【问题标题】:Pass kwargs into Django Filter将 kwargs 传递给 Django 过滤器
【发布时间】:2016-12-11 05:03:36
【问题描述】:

从 Django Admin 中查看模型条目时,您可以指定过滤器。我怎样才能模仿这种行为?不熟悉kwargs,但与此类似:

foo = Model.objects.filter(**__exact='**')

其中第一组** 将是模型中的一个字段,第二组将是一个条目。基本上,根据用户在前端选择的内容,使查询可变。我如何将该变量排序选项发送到视图,然后将其返回到网页。用字典怎么样?请帮忙

这个SO question 已被证明有点帮助,但仍不能完全掌握。

【问题讨论】:

    标签: python django django-templates django-admin django-views


    【解决方案1】:

    您可以使用 ** 将 python dict 解压缩为您的过滤器参数

    your_filters = {
    'field_1__exact': value_1,
    'field_2__gte': value_2,
    }
    
    Model.objects.filter(**your_filters)
    

    也就是说,您可以根据用户输入动态构建查询过滤器(python 字典)。

    【讨论】:

    • 感谢您的回复。 2 个问题:** 是否适用于your_filters 变量,让 Django 知道这可以改变?如果是这样,那不是变量已经做了什么,它会有所不同吗?问题#2:假设我将“占位符”放在前端,我如何将用户的选择翻译回视图。可能是 AJAX 调用?
    • @Kervvv 关于您的问题 2:是的,您可以使用 ajax 传递它并从 request.POST 或 request.GET 数据中读取它们,具体取决于您想要什么。第一个问题我没看懂。
    • @levi,无论如何我可以在 kwarg 过滤器中添加“OR”语句吗?
    • @Christopher 在 django 和管道中使用 Q 对象。 Q(question__startswith='Who') | Q(question__startswith='What')
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 2017-11-11
    • 1970-01-01
    • 2013-02-09
    • 2012-08-25
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多