Djangoクエリセットフィルタリング付きの癖(?)があります:
ipdb> MagazineIssue.objects.filter(id__in=l_magazines.values_list('id'))
Out[0]: []
または
ipdb> MagazineIssue.objects.filter(id__in=[l_magazine.id for l_magazine in l_magazines])
Out[0]: [<MagazineIssue: Architecture Australia, Jan 1995 (#1)>]
そして
ipdb> l_magazines.values_list('id')
Out[0]: [(1,)]
ipdb> [l_magazine.id for l_magazine in l_magazines]
Out[0]: [1]
それでは、values_list()の使い方は? (生産する):
[1]
またはpythonリストの理解は「進むべき道」ですか?
l_magazines.values_list('id', flat=True)
を試してください。これは、単一のIDタプルのリストではなく、IDのリストを返します。
注意すべきことの1つは、値/ values_listの動作がリスト内包表記と異なることです。
間違ったものを選択すると、実行しようとしていることに応じて、不必要なデータベースヒットが発生したり、不必要に不自然になったりします。