Django: список значений связанных значений как часть запроса списка значенийPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Django: список значений связанных значений как часть запроса списка значений

Сообщение Anonymous »

Я пытаюсь выяснить, можно ли настроить запрос, который будет действовать как -то вроде model.objects.values_list ('id', 'investion_model__ids') и вернуть что -то вроде [(1L, [2L, 6L]), (2L, [1L,]), (3L, [1L, 3L, 4L, 5L], [//code - P. />

Код: Выделить всё

class Player(models.Model):
positions = models.ForeignKey(Position)
...

>>> # players 31, 32, 33 play multiple positions, and I want a result to be
>>> # [(player.id, [a list of position.id for all positions]), ...]

>>> Player.objects.filter(id__in=[31, 32, 33]).values_list('id', 'positions__id')
[(31L, 13L), (31L, 7L), (32L, 13L), (32L, 8L), (33L, 13L), (33L, 7L)]
This Values_list Запрос производит несколько кортежей для одного и того же идентификатора значение, две записи для id = 31 , id = 32 и id = 33 . Когда я делаю запрос values_list на конкретном игроке (

Код: Выделить всё

id=31< /code>), я получаю список идентификаторов позиции, которые я хотел бы: < /p>

>>> p31 = Player.objects.get(id=31)
>>> position_ids = p31.positions.values_list('id', flat=True)
>>> type(position_ids)

>>> position_ids
[13L, 7L]
>>>
>>> # I want [(31L, [13L, 7L]), (32L, [13L, 8L), (33L, [13L, 7L)]
>>> # Without have to do something like a list comprehension:
>>> # [(p.id, list(p.positions.values_list('id', flat=True))
>>> #     for p in Player.objects.filter(id__in=[31, 32, 33])]
< /code>

Без сомнения, понимание списка даст результат, который я хотел бы. Я хотел избежать нескольких отдельных запросов в базе данных с каждым списком (p.positions.values_list ('id', flat = true)) 
, вынуждая разрешение ValueStistQueryset в фактический список. Конечно, если я не приведу резолюцию, операция в результате понимания списка, по -видимому, выполнит свежий p.positions.valuse_list ('id', flat = true) Query.

Подробнее здесь: https://stackoverflow.com/questions/196 ... list-query
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»