繁体   English   中英

将 QuerySet 转换为 Django 中的 python 列表

[英]Convert QuerySet to python list in Django

我有这个脚本:

lec_name = request.POST['selected_name']
data = Schedules.objects.filter(name=lec_name)
data_list = data.values_list('schedule', flat=True)
print(data_list)

这给出了下面的 OUTPUT:

<QuerySet ["[['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']]"]>

然后我尝试使用以下脚本将data_list转换为列表:

converted_list = list(data_list)

这给出了下面的 OUTPUT:

["[['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']]"]

这工作正常。 但我没有得到预期的 output 正确。

预期 OUTPUT

[['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']]

我该如何解决这个问题? 我找到了很多关于这个的答案,但没有任何帮助。 我正在使用 Python 3.7.4、Django 3.0.1

更新

这是我的Schedules model:

class Schedules(models.Model):
    name = models.CharField(max_length=224)
    semester = models.CharField(max_length=20)
    hall_n_time = models.CharField(max_length=1000)
    schedule = models.CharField(max_length=1000)

数据库中的hall_n_timeschedule列,它们有两个 python 列表作为字符串。 例如,计划列存储[['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']]列表为一个字符串。

您假设values_list flat参数将解码 json 字符串,但事实并非如此。

它只返回单个值而不是元组

如果只传入单个字段,也可以传入 flat 参数。 如果为 True,这将意味着返回的结果是单个值,而不是一个元组

它完全如前所述返回一个时间表字符串数组(可能更多)

["[['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']]"]

你仍然需要json.loads()你的 JSON 字符串来解码它

converted_list = [json.loads(item) for item in data_list]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM