不能在Django模板html中使用过滤器

时间:2014-03-24 22:09:16

标签: python django django-templates

我的Django项目存在问题。我的情况如下:

{% for subObject in mainObject.subObjects.all %}

这很好用,每个subObject都可以很好地迭代。我现在想要的是打印一个对象的子集,如:

{% for subObject in mainObject.subobjects.filter(someField=someValue) %}

到目前为止,我已经搜索了有关我得到的错误的解决方案:

Could not parse the remainder: '(someField=someValue)'

但是没有找到关于在使用过滤器时线条应该如何不同的解决方案。我想调整template.html文件,因此我不想在views.py文件上进行更改(所有内容都可以正常工作)。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

关注@ Yuji'Tomira'Tomita的评论..

不要在模板中加入太多逻辑,引自django docs

  

哲学

     

如果你有编程背景,或者你已经习惯了   将编程代码直接混合到HTML中的语言,你会想要的   要记住,Django模板系统不仅仅是Python   嵌入到HTML中。这是设计:模板系统的意思   表达陈述,而不是程序逻辑。

最好在视图中定义查询集并传递给模板:

视图:

def my_view(request):
    ...
    my_objects = mainObject.subobjects.filter(someField=someValue)
    return render(request, 'mytemplate.html', {'my_objects': my_objects})

模板:

{% for subObject in my_objects %}
    ...
{% endfor %}

希望有所帮助。