1. ホーム
  2. django

[解決済み] Django は、id の配列から特定の順序で QuerySet を取得します。

2022-12-20 19:09:36

質問

簡単な質問です。

QuerySet(必要であれば配列)を返すために使用したいidのリストを持っていますが、その順序を維持したいと思います。

ありがとうございます。

どのように解決するのですか?

データベースレベルでその特定の順序を強制することはできないと思うので、代わりにpythonでそれを行う必要があります。

id_list = [1, 5, 7]
objects = Foo.objects.filter(id__in=id_list)

objects = dict([(obj.id, obj) for obj in objects])
sorted_objects = [objects[id] for id in id_list]

これは、idをキーとしてオブジェクトの辞書を構築し、ソートされたリストを構築する際に簡単に取得できるようにします。