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