我从将数据保存到charfield
的模型中获得一个查询集。charfield在表单上显示为MultipleChoiceField
,其中有一个CheckboxSelectMultiple
小部件。最多可选择5个。在
我想计算查询集中的元素数。每个查询集可以在列表中元素的数量上有所不同。现在,当我得到列表的len
时,值是元素数量的5倍。口述中的列表不是列表而是其他东西吗?当我不使用queryset手动创建一个列表并获得所述列表的len
时,该值是正确的。E、 有3个元素的列表返回3。在
query = MyModel.objects.all().values('myvalue')
print(query[0])
{'myvalue': "['3']"}
print(query[1])
{'myvalue': "['1', '4']"}
print(query[0]['myvalue']
['3']
print(query[1]['myvalue']
['1', '4']
print(len(query[0]['myvalue']))
5
print(len(query[1]['myvalue']))
10
如果使用charfield来存储数据,那么存储时的所有内容都将转换为char,因此不能直接对其使用len。 如果使用postgres作为数据库后端,则可以使用JSONField或ListField。 如果必须使用CharField或TextField,则需要先将其转换回原处。您可以创建一个继承自TextField的自定义字段,该字段将在您使用它的任何位置或仅使用json.loads()从数据库加载数据后
使用ast module将字符串列表转换为list对象并获得len
相关问题 更多 >
编程相关推荐