在 django 模板中过滤 object_list

Posted

技术标签:

【中文标题】在 django 模板中过滤 object_list【英文标题】:filter object_list in django template 【发布时间】:2018-05-07 03:59:24 【问题描述】:

我用 object_list 表创建了一个模板 我需要按子字符串过滤,然后当用户过滤表格时,表格将在线更新。

它不起作用。这样做的正确方法是什么?

    我为此过滤器创建视图获取带有子字符串值的 ajax 请求

定义过滤器点(请求):

point_list = Point.objects.all()

try:

    req = request.GET.get("filterData")
    if req:
        point_list = Point.objects.filter(onsitePointName__icontains=req)

except AttributeError:
    print("failed")

#qs_json = serializers.serialize('json', point_list)
#return HttpResponse(qs_json, content_type='application/json')

return render_to_response('point/point_list_update.html', 'point_list': point_list)
    在 HTML 模板中: % for point_list % ... point.mangoId point.onsitePointName ....

【问题讨论】:

您能否添加您的错误日志并以干净的方式发布您的代码 你能说得更具体点吗?您的问题不清楚:您看到了什么错误?什么不工作? 【参考方案1】:

以 django 形式构建过滤器的输入类型: filterBySubstring = forms.CharField(label='substring', max_length=100, required=True)

然后通过以下方式在 python 代码中获取该值: form = PointForm(request.POST)

if request.method == 'POST':  
    filter_value = form['filterBySubstring'].value()

【讨论】:

【参考方案2】:

选项1: 您可以使用来自 django docs 的自定义模板过滤器和标签

 from django import template

 register = template.Library()

 @register.assignment_tag
 def get_filtered_points(qs, **kwargs):
   return qs.filter(**kwargs)

模板: % get_filtered_points your_filter_query as new_point_list % % for book in new_point_list % ... % endfor %

注意:不要忘记在模板中加载模板标签。

选项 2:您也可以使用 intercularjs 解释 here

【讨论】:

以上是关于在 django 模板中过滤 object_list的主要内容,如果未能解决你的问题,请参考以下文章

Django模板之模板变量过滤器

在代码中使用 django 内置过滤器(在模板之外)

如何过滤django模板中的特殊字符

针对特定类型的所有变量的 django 模板过滤器

在 django 模板中过滤 object_list

Django 过滤和查询:在views.py、模板或过滤器中进行?