django做什么,当我在模板中做类似的事情时
{{ object.parameter }}
我问这个是因为在arrayfields(postgresql数组字段)的情况下它会打印出来
{'value', 'value', 'value'}
(因为这就是postgresql如何在arrayfields中存储数组)
或
['value','value','value']
如果我使用字段post_init方法将postgresql数组转换为python列表。
期望的输出当然是价值,价值,价值。我宁愿不使用某种过滤器,因为那时我将不得不在模板中使用IF或使用某种模板标签过滤器为我打印的每个值,这不是一个聪明的事情。
顺便说一句,我知道我可以在模板中做类似的事情:
{% for choice in field.choices %}
{{ choice }}
{% if forloop.last %}
{% else %},
{% endif%}
{% endfor %}
这给了我我想要的东西,但我认为还有其他一些方法 - 用一些modelfield方法或其他东西。
艾伦
答案 0 :(得分:1)
django做什么,当我在模板中做类似的事情时
{{object.parameter}}
期望的输出当然是价值,价值,价值。我宁愿不使用某种过滤器,因为那样我就不得不在模板中使用IF,或者为我打印出来的每个值使用某种模板标签过滤器,这样做并不是一件好事。 / p>
你可以做一个非常简单的过滤器:
@register.filter
def comma_join(values):
return u', '.join(values)
这么简单:
{{ object.parameter|comma_join }}
为什么要避免这么简单的解决方案?
这给了我我想要的东西,但我认为还有其他一些方法 - 用一些modelfield方法或其他东西。
当然你也可以添加这样的方法:
class YourModel(models.Model):
# ....
def comma_join_parameter(self):
return u', '.join(self.parameter)
并在模板中使用它:
{{ object.comma_join_parameter }}