Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2014 17:51:00

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных по списку

Общем в бд есть данные, мне их нужно вывести по списку который я сам задал, например

[45,1,98,1543,65,3,12, и т.д.]
(id номера для бд).
Как это можно сделать?

Отредактировано Rebra4 (Ноя. 9, 2014 17:53:58)

Офлайн

#2 Ноя. 9, 2014 20:54:53

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Вывод данных по списку

Несколько вариантов, можно например 1) в коде получать записи по id и формировать список, который будет обработан в шаблоне или в коде или 2) запросом:

1) проходим по списку id и формируем список объектов:

object_ids = [45,1,98,1543,65,3,12]
object_list = []
for id in object_ids:
    object_list.append(Models.objects.get(id=id)

2)Формируем QuerySet:
object_ids = [45,1,98,1543,65,3,12]
qs= Model.objects.filter(id__in=object_ids)

Отредактировано inoks (Ноя. 9, 2014 20:55:18)

Офлайн

#3 Ноя. 9, 2014 22:07:17

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных по списку

А список хранить в файле? Если записей будет несколько тысяч то наверно это будет в ущерб производительности? Для вывода думаю использовать in_bulk.

Офлайн

#4 Ноя. 9, 2014 22:38:44

lead-in
Зарегистрирован: 2014-10-13
Сообщения: 19
Репутация: +  5  -
Профиль   Отправить e-mail  

Вывод данных по списку

2)Формируем QuerySet:
object_ids = [45,1,98,1543,65,3,12]
qs= Model.objects.filter(id__in=object_ids)

Так не сработает, объекты не будут отсортированы в соответствии с object_ids.

Ещё как вариант можно сделать так:
l = [45,1,98,1543,65,3,12]
sorted(Model.objects.filter(id__in=l), cmp=lambda x,y: cmp(l.index(x.pk), l.index(y.pk)))
То есть объекты будут отсортированы в соответствии с индексом из списка l, при желании функцию cpm можно дополнить на случай “непредвиденных” событий (id из l в БД не окажется и т.п).

Офлайн

#5 Ноя. 10, 2014 21:08:38

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных по списку

так что там с хранением списка?

Офлайн

#6 Ноя. 11, 2014 19:35:54

lead-in
Зарегистрирован: 2014-10-13
Сообщения: 19
Репутация: +  5  -
Профиль   Отправить e-mail  

Вывод данных по списку

так что там с хранением списка?

Где хранить список по-моему абсолютно без разницы. А если беспокоит производительность можно в саму базу добавить поле (sorting, например). И по нему уже сортировать.

P.S.: А вообще просто не очень понятно чего вы хотите добиться, по-этому конкретнее сказать нечего)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version