django - 访问查询集中列表中的元素
问题描述
我正在从我的 Django 网站上的页面中保存列表中的元素
保存到数据库时列表如下所示
['Precipitaciones', 'Pirineo', 'aragonés', 'catalán']
['activarán', 'tormentas', 'ibérica,', 'descartan', 'chubascos', 'dispersos,', 'temperaturas']
我希望能够访问所有元素,但是当我运行带有上下文的查询集时,我会返回
<QuerySet [("['Precipitaciones', 'Pirineo', 'aragonés', 'catalán']", ("['activarán', 'tormentas', 'ibérica,', 'descartan', 'chubascos', 'dispersos,', 'temperaturas']")]>
对我来说,这看起来像是 Queryset 内元组内的字符串内的列表内的刺痛。
所以我无法锻炼如何访问单个元素
当我尝试→ queryset.0.0
它返回第一个元素的第一个元素,但我不知道如何获取该元素的第一个字符串,如果我使用 → queryset.0.0.0 我只是再次获得第一个元素,它是一个括号[
任何帮助或一些我可以发现更多关于它的文档都会很棒。
这是我正在使用的查询集
queryset = model.objects.filter(show_word=True).values_list('word_esp').filter(username_id = user_id_fk)`
解决方案
您将列表作为字符串存储在数据库中。所以 queryset.0.0 是一个字符串而不是列表。并且当您调用 queryset.0.0.0 时返回字符串中的第一个字符[
你有两个解决方案:
1-如果您的数据库后端是 postgres,您可以使用 JSONField 而不是使用 CharField os TextField
2-在您的模板中,您可以编写一个过滤器以将字符串加载为 json 并获得预期的元素,如下所示:
@register.filter
def get_from_string_list(str_list, index):
list_object = json.loads(str_list)
return list_object[index]
并在您的模板中像这样使用它:
{{ queryset.0.0|get_from_string_list:0 }}
在您的 python 代码中,您可以将选定的字符串转换为 json 并获得预期的索引
推荐阅读
- ruby - Ruby - 如何检查谷歌云存储(桶)中是否存在文件?
- laravel - 如何从刀片文件中在公司页面中显示公司徽标和名称
- r - 使用 rvest 读取多个页面
- javascript - 我可以使用 javascript 在一个 var 中保存一个 html 集合吗?
- java - 处理反向整数溢出
- javascript - 将图像放在彼此顶部时,CSS/JS Top 和 Left 会变形
- c - 如何在eclipse中修复“ld返回1退出状态”
- python - 有没有办法在保持环境变量的安全优势的同时部署 .env 文件?
- vba - 我可以使用哪些事件来监视在 Word 中键入的用户?
- elixir - 由于虚拟字段验证而更新用户时出错