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

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

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

  1. 我为此过滤器创建视图获取带有子字符串值的 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})
  1. 在 HTML 模板中: {% for point_list %} ... {{ point.mangoId }} {{ point.onsitePointName }} ....

【问题讨论】:

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

标签: django django-queryset


【解决方案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

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2018-03-01
      • 2012-06-03
      • 1970-01-01
      • 2020-02-16
      • 2017-03-29
      相关资源
      最近更新 更多