在 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的主要内容,如果未能解决你的问题,请参考以下文章