2

Member特定のフィルターを使用してデータベースからオブジェクトをロードするDjangoビューがあります。

次に、このロジックを変更して特定Memberの最初のロジックを提示し、残りを自然な順序で実行する必要があります。

最も簡単な方法は、クエリをすぐに実行し、リストを取得し、最初にアイテムを削除して挿入することです。しかし、の怠惰な性質を利用する方法がまだあるかどうか、QuerySet私は最も興味があります。

C#では、次のように記述します。

IEnumerable<Member> members = db.Members; // db.Members is lazy
members = Enumerable.Union( // construct a lazy sequence that traverses its arguments
    new [] { specificMember },
    members.Where(m => m != specificMember)
);

ループが通過するmembersとき、最初に取得してから、元の遅延読み込みロジックがspecificMember使用したものを使用します。db.Members

DjangoとPythonで同じことをする方法はありますか?

4

1 に答える 1

6

を使用しitertools.chainます。何かのようなもの:

import itertools
original_members = .... # get an iterator of the data
members = itertools.chain([specific_member], original_members)

chain 関数は反復子を返します。反復子は、最初のパラメーターのシーケンスから値を返すことから始めます。これは、specific_member を含む単一要素のリストです。次に、 から値を返し始めますがoriginal_members、これは遅延シーケンスであると想定しています。

于 2011-06-15T22:33:20.337 に答える