Найти - Пользователи
Полная версия: Вывод данных по списку
Начало » Django » Вывод данных по списку
1
Rebra4
Общем в бд есть данные, мне их нужно вывести по списку который я сам задал, например
[45,1,98,1543,65,3,12, и т.д.]
(id номера для бд).
Как это можно сделать?
inoks
Несколько вариантов, можно например 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)
Rebra4
А список хранить в файле? Если записей будет несколько тысяч то наверно это будет в ущерб производительности? Для вывода думаю использовать in_bulk.
lead-in
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 в БД не окажется и т.п).
Rebra4
так что там с хранением списка?
lead-in
так что там с хранением списка?

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

P.S.: А вообще просто не очень понятно чего вы хотите добиться, по-этому конкретнее сказать нечего)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB