简体   繁体   English

将 QuerySet 转换为 Django 中的 python 列表

[英]Convert QuerySet to python list in Django

I have this script:我有这个脚本:

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

This gives below OUTPUT:这给出了下面的 OUTPUT:

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

Then I tried below script to convert data_list to a list:然后我尝试使用以下脚本将data_list转换为列表:

converted_list = list(data_list)

This gives below OUTPUT:这给出了下面的 OUTPUT:

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

This works fine.这工作正常。 But I'm not getting the expected output properly.但我没有得到预期的 output 正确。

EXPECTED OUTPUT :预期 OUTPUT

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

How can I solve this?我该如何解决这个问题? I found a lot of answers about this, but none helped.我找到了很多关于这个的答案,但没有任何帮助。 I'm using Python 3.7.4, Django 3.0.1我正在使用 Python 3.7.4、Django 3.0.1

UPDATE更新

Here is my Schedules model:这是我的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_time and schedule columns in database, They have two python lists as strings.数据库中的hall_n_timeschedule列,它们有两个 python 列表作为字符串。 For an example, schedule column stores [['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']] list as a string.例如,计划列存储[['1', 'Subject 01', 'Hall 01', 'Tuesday'], ['2', 'Subject 02', 'Hall 03', 'Monday']]列表为一个字符串。

You have assumed that values_list flat parameter would decode json string which is not the case.您假设values_list flat参数将解码 json 字符串,但事实并非如此。

It just returns single value instead of tuple它只返回单个值而不是元组

If you only pass in a single field, you can also pass in the flat parameter.如果只传入单个字段,也可以传入 flat 参数。 If True, this will mean the returned results are single values, rather than one-tuples如果为 True,这将意味着返回的结果是单个值,而不是一个元组

It returns exactly as mentioned, an array of schedule strings ( could be more of them )它完全如前所述返回一个时间表字符串数组(可能更多)

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

you still need to json.loads() your JSON string to decode it你仍然需要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