Django模板长度过滤器为_集损坏?

Django模板长度过滤器为_集损坏?,django,django-templates,django-template-filters,Django,Django Templates,Django Template Filters,我在模板中使用|length过滤器来显示对象的recordcount,但是我目前被迫使用.count,因为对相关集合使用过滤器似乎不起作用!以下 {{ myobject.retatedObject_set.all|length }} 按字面打印: {{ myobject.retatedObject_set.all|length }} 这是: {{ myobject.retatedObject_set.all.count }} 返回预期结果 但是:count()会生成一个额外的SQL查询,这

我在模板中使用
|length
过滤器来显示对象的recordcount,但是我目前被迫使用
.count
,因为对相关集合使用过滤器似乎不起作用!以下

{{ myobject.retatedObject_set.all|length }}
按字面打印

{{ myobject.retatedObject_set.all|length }}
这是:

{{ myobject.retatedObject_set.all.count }}
返回预期结果

但是:count()会生成一个额外的SQL查询,这就是为什么我总是使用| length filter,而它不会!(见我的答案:对问题的回答)

这可以被认为是Django模板引擎中的一个bug吗?如何避免额外的查询

编辑:

经过一次艰难的调试后,我意识到问题在于使用django调试工具栏(它在面板中打印每个用作普通字符串的过滤器)加上使用AngularJS(它的模板具有相同的语法)。我通过重新配置AngularJS以使用不同的符号解决了这个问题:

config(function($interpolateProvider) {
    $interpolateProvider.startSymbol('{$');
    $interpolateProvider.endSymbol('$}');
});

你能用过滤器吗?我想你可以尝试在你的设置中将
DEBUG
TEMPLATE_DEBUG
设置为true,看看是否出现任何奇怪的错误。是的,其他过滤器都可以(例如,我像往常一样使用| date来显示格式化日期),并且我已经打开了DEBUG和TEMPLATE_DEBUG