@Bjornie
Изучаю Python

Как получить чистый список из запроса по методу values\values_list в Django?

Вопрос кажется простым, но я не нашел решения после долгого гуглинга и проб. А задача проста: я хочу получить чистый список из идентификаторов (не queryset и никаких других примесей, например при таком запросе:
Mode.objects.filter(somefield__in=[1,2,3]).values_list('id', flat=True)
То что я получаю это объекты qs в списке:
[<QuerySet [6]>, <QuerySet [3]>, <QuerySet [4]>, <QuerySet [12]>]
даже если я привожу это в список с помощью list().

А мне хотелось бы получить что-то типа: [45, 123, 34, 98], т.е. простой список. Подскажите, как это делается? Как я решил эту задачу на данный момент - 1) заключаю в list 2) перевод списка в строку (str), 2) а потом выпилывание из строки всех digits с помощью regex. Грубо, но работает. Но неужели нет простого метода, который сработает как я хочу?
  • Вопрос задан
  • 2109 просмотров
Пригласить эксперта
Ответы на вопрос 2
un1t
@un1t
ids = list(Mode.objects.filter(somefield__in=[1,2,3]).values_list('id', flat=True))
Ответ написан
crazyzubr
@crazyzubr
Python backend-developer
Могу предположить, что вместо этого:

# Выбрать все объекты load за дату
loads = Load.objects.filter(date=datetime.now())
# цикл по loads, в каждой итерации еще цикл с получением значений для rent_id
[i.values_list('rent_id', flat=True) \
for i in [load.loadpara_set.all() for load in loads] if i]


Нужно так:

list(LoadPara.objects.filter(load__date=datetime.now().date()).values_list('rent_id', flat=True))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы