所以我创建了一个自定义过滤器:
@register.filter(name='field_values')
def field_values(model, field):
return model.objects.values_list(field, flat=True)
获取模型类值和参数的字段,并返回该特定字段的模型对象列表。这是我尝试调用它的模板。
<tr>
{% for field in fields %}
<td>{{ model_class|field_values: field }} </td>
{% endfor %}
</tr>
model_class
是视图中动态创建的模型
views.py
...
if form.is_valid(): # All validation rules pass
model_classes_field = form.cleaned_data['model_classes_field']
model_class = get_model('Directories', model_classes_field)
我期待一切顺利运行,但我得到一个&#34; * field_values需要1个参数,0提供*&#34;错误。当我已插入参数时,为什么会发生这种情况?这是过滤器语法的问题吗?
答案 0 :(得分:1)
冒号后面有一个空格,这会使解析器混乱。改为使用它:
{{ model_class|field_values:field }}
(注意你的代码非常低效:它一遍又一遍地查询数据库,每个字段一次。而不是这样做,你应该在视图中查询一次并按字段对输出进行分组。)