【发布时间】:2016-10-25 19:14:23
【问题描述】:
我想从下面的列表中去掉 [u']。
[u'Wireless Internet', u'Air Condition', u'Wardrobe', u'Television', u'In House Movies', u'Flatscreen TV']
并在我的 django 模板中显示以下值
Wireless Internet, Air Condition, Wardrobe
unicode 是在保存 MultipleChoiceField 值时产生的。
型号
class MyRooms(models.Model):
#other fields
room_amenities=models.TextField()
def __unicode__(self):
return '%s, %s' % (self.room_name, self.id)
room_amenities= forms.MultipleChoiceField(choices=ROOM_CHOICES, required= False, widget=forms.CheckboxSelectMultiple)
我尝试编码为“utf-8”,但由于 AttributeError 而无法正常工作。我还通过编写一个不起作用的自定义模板过滤器来遍历列表。它在 django 模板中返回 None。
对于我写的自定义模板标签,
register = template.Library()
def strip_u(value):
thin=list(map(str, value))
return thin
register.filter("strip_u", strip_u)
输出是
['[', 'u', "'", 'W', 'i', 'r', 'e', 'l', 'e', 's', 's', ' ', 'I', 'n', 't', 'e', 'r', 'n', 'e', 't', "'", ',', ' ', 'u', "'", 'A', 'i', 'r', ' ', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', "'", ',', ' ', 'u', "'", 'W', 'a', 'r', 'd', 'r', 'o', 'b', 'e', "'", ',', ' ', 'u', "'", 'T', 'e', 'l', 'e', 'v', 'i', 's', 'i', 'o', 'n', "'", ',', ' ', 'u', "'", 'I', 'n', ' ', 'H', 'o', 'u', 's', 'e', ' ', 'M', 'o', 'v', 'i', 'e', 's', "'", ',', ' ', 'u', "'", 'F', 'l', 'a', 't', 's', 'c', 'r', 'e', 'e', 'n', ' ', 'T', 'V', "'", ']']
我该怎么做?
更新:根据 Bakkal 的解决方案。我这样做了:
{% for myroom in myrooms %}
<p> {{myroom.room_name}}</p>
<ul>
{% for amenity in myroom.room_amenities %}
<li>{{amenity}}</li>
{% endfor %}
</ul>
{% endfor %}
输出是
[
u
'
W
i
r
e
l
e
s
s
I
n
t
e
r
n
e
【问题讨论】:
-
您可以在这里发布您的尝试及其输出吗?
-
是的.. 问题在于剥离 [u']。这就是我需要的。
-
好的..如何在模板中没有重音符号的情况下显示它?
-
您有
Room模型吗?它有amenities字段吗?如果是,该字段的类型是什么?如果您使用了CharField或TextField,那么可能会强制将列表类型转换为字符串。 -
是的,我有一个房间模型,该字段是一个文本字段。我已经更新了我的问题。但我还没有得到像这样的解决方案:room.amenities = amanities。 'amanties' 是怎么来的?
标签: python django django-models django-views