[英]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_time
和schedule
列,它们有两个 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.