J'ai une bizarrerie (?) Avec Django filtrage par ensemble de requêtes:
ipdb> MagazineIssue.objects.filter(id__in=l_magazines.values_list('id'))
Out[0]: []
ou
ipdb> MagazineIssue.objects.filter(id__in=[l_magazine.id for l_magazine in l_magazines])
Out[0]: [<MagazineIssue: Architecture Australia, Jan 1995 (#1)>]
et
ipdb> l_magazines.values_list('id')
Out[0]: [(1,)]
ipdb> [l_magazine.id for l_magazine in l_magazines]
Out[0]: [1]
alors, comment utiliser values_list ()? (produire):
[1]
ou python la compréhension de la liste est-elle la "voie à suivre"?
Essayez l_magazines.values_list('id', flat=True)
. Cela renvoie une liste d'ID au lieu d'une liste de tuples d'ID unique.
Une chose à noter est qu'il existe une différence dans le comportement de values / values_list par rapport à une compréhension de liste:
Choisir le mauvais se traduira soit par des hits de base de données inutiles, soit par des failles inutiles, selon ce que vous essayez de faire.