我正在使用PostgreSQL和Django,我正在尝试使用
ArrayField(CharField())
既不存储值也不检索引发任何异常,但是注意存储["string", "another_string", "string with whitespaces", "str"]
然后检索它返回
'{string,another_string,"string with whitespaces",str}'
使用ArrayField(IntegerField())
或ArrayField(ArrayField(CharField()))
虽然我知道我可以使用JSON或将列表嵌套在另一个列表中以获得正确读取的[[strings]],但我想知道为什么会这样。
编辑:
事实证明,使用ArrayField(ArrayField(CharField()))
并不起作用:
Python 3.3.2 (default, Mar 20 2014, 20:25:51)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from api.models import Game
>>> g = Game.objects.all()[0]
>>> g.p1hand = [["a", "b", "c d"]]
>>> g.p1hand
[['a', 'b', 'c d']]
>>> g.save()
>>> g = Game.objects.all()[0]
>>> g.p1hand
'{{a,b,"c d"}}'
>>>
我不知道为什么它在ArrayField(ArrayField(CharField()))
编辑:关于@LongBeard_Boldy,这是ArrayField(ArrayField(CharField()))
的另一个实例返回的内容:
>>> g.game_objects
[['Test', '3', '3', '0', 'building', '5', '2', '2', '0'], ....]
答案 0 :(得分:1)
我遇到了同样的问题,最终导致了迁移问题。我确实在models.py文件中包含了该字段,但我没有迁移,所以django有点理解如何处理列表而不是如何检索它们。
一旦我迁移了数据库,一切都很完美。