访问查询集中列表中的元素

时间:2019-09-14 12:11:34

标签: django python-3.x django-queryset

我正在从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内部元组中字符串内部列表中的st。

所以我不能锻炼如何访问单个元素

当我尝试→queryset.0.0

我已返回屏幕 enter image description here

哪个返回第一个元素的第一个元素,但如果使用→queryset.0.0.0,我不知道如何获取该元素的第一个字符串。我只是再次得到第一个元素,即括号 [

任何帮助表示赞赏或提供一些文档,我可以从中找到更多关于它的信息。

这是我正在使用的查询集

queryset = model.objects.filter(show_word=True).values_list('word_esp').filter(username_id = user_id_fk)`

1 个答案:

答案 0 :(得分:0)

您将列表作为字符串存储在数据库中。因此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并获取预期的索引