Конвертировать QuerySet в python список в Django - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть этот сценарий:

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

Это дает ниже ВЫХОД:

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

Затем я попытался ниже сценарий для преобразования data_list в список:

converted_list = list(data_list)

Это дает ниже ВЫХОД:

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

Это прекрасно работает. Но я не получаю ожидаемый результат должным образом.

ОЖИДАЕМЫЙ ВЫХОД :

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

Как я могу решить эту проблему? Я нашел много ответов по этому поводу, но ни один не помог. Я использую Python 3.7.4, Django 3.0.1

ОБНОВЛЕНИЕ

Вот моя Schedules модель:

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']] в виде строки.

1 Ответ

1 голос
/ 30 апреля 2020

Вы предположили, что параметр 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...