Django DecimalField返回"None"而不是空值

Ed.*_*Ed. 3 django null

对于一个空白的十进制字段,有没有办法强制django显示任何内容而不是"无"?

在我的模板中,我显示了特定字段的所有值的列表.每个值都超链接到一个页面,该页面显示在该值上过滤的查询结果.但是因为有一些空值的条目,我的列表包括实际的DecimalField条目和所有空的条目的"无".当用户单击None时,django会抛出验证错误,因为您无法使用字符串查询DecimalField.

我可以编写if语句检查Nones的所有十进制字段实例并跳过它们,但这远非优雅的解决方案.有什么建议?

这是代码的一部分,尽管还有其他模板以稍微不同的方式派生None值:

{% for item in choices %}
    <a href={% url app_views.field_choice item %}>{{ item }}</a><br>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

Jon*_*nan 15

如果您不想过滤值列表,可以使用内置defaultdefault_if_none模板过滤器来控制显示的内容,但是使用上面给出的示例,您最终会得到空链接.

{{ item|default_if_none:"" }}
Run Code Online (Sandbox Code Playgroud)

鉴于您需要对每个值进行超链接和查询以及如果没有给出数字将显示错误的视图,我会在您将列表传递给模板上下文时对其进行过滤:

{"choices": [choice in choices where choice is not None]}
Run Code Online (Sandbox Code Playgroud)