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