0

在 Django 中,我从一个选择字段中request.POST.getlist('tags')使用u"['literature']". 我认为这是非常合理甚至可取的,因为我不想使用另一个表来存储这些信息。显然,当我尝试检索该信息时,问题就出现了,因为正如预期的那样,我得到了这个:

u'['
u'u'
u"'"
u'l'
u'i'
u't'
u'e'
.
.
.

(假设这个标签是文学,例如)。

如何将此 unicode 对象转换为 Python 列表?有更好的方法吗?

提前致谢

4

3 回答 3

2

简短的回答:创建另一个表。

数据库被设计为以特定方式使用,为什么要试图强迫它们以不应该的方式存储信息?

还有其他解决方案,但最好的答案是按预期使用数据库,从长远来看会更容易。

于 2012-04-27T15:13:58.827 回答
1

这有帮助吗?

>>> import ast
>>> lst = ast.literal_eval(u"['literature']")
>>> lst
['literature']
>>> isinstance(lst, list)
True

但更好的方法是在存储为字符串之前正确序列化列表。你可以使用现有的pickle实现之一,json,或者自己滚动(因为它不必是通用的,它可以是一个简单的oneliner,比如"SENTINAL".join(list)......虽然我不推荐后者)

于 2012-04-27T15:22:14.923 回答
1

用于json在写入前转换为 JSON,在读取后从 JSON 转换。或者使用野外的几种实现之一JSONField

于 2012-04-27T15:12:49.440 回答