在 Django 中,我从一个选择字段中request.POST.getlist('tags')使用u"['literature']". 我认为这是非常合理甚至可取的,因为我不想使用另一个表来存储这些信息。显然,当我尝试检索该信息时,问题就出现了,因为正如预期的那样,我得到了这个:
u'['
u'u'
u"'"
u'l'
u'i'
u't'
u'e'
.
.
.
(假设这个标签是文学,例如)。
如何将此 unicode 对象转换为 Python 列表?有更好的方法吗?
提前致谢
简短的回答:创建另一个表。
数据库被设计为以特定方式使用,为什么要试图强迫它们以不应该的方式存储信息?
还有其他解决方案,但最好的答案是按预期使用数据库,从长远来看会更容易。
这有帮助吗?
>>> import ast
>>> lst = ast.literal_eval(u"['literature']")
>>> lst
['literature']
>>> isinstance(lst, list)
True
但更好的方法是在存储为字符串之前正确序列化列表。你可以使用现有的pickle实现之一,json,或者自己滚动(因为它不必是通用的,它可以是一个简单的oneliner,比如"SENTINAL".join(list)......虽然我不推荐后者)
用于json在写入前转换为 JSON,在读取后从 JSON 转换。或者使用野外的几种实现之一JSONField。