4

組み合わせて並べ替えたいクエリセットが2つあります。

これが私の質問です:

latestbooks = Book.objects.all().order_by('-added') latestvideos = Video.objects.all().order_by('-added')

これらのクエリを組み合わせて、テンプレートに渡す前に並べ替えて、サイトでの最新のアクティビティを示すリストを作成できるようにします。これは、新しい本か新しいビデオかを、追加された順序で示します。 。

4

1 に答える 1

9

それらを組み合わせてリストとして並べ替えることはできますが、クエリセットとして並べ替えることはできません。機能性、それはそれほど重要ではありませんが、それ以上のフィルタリングは不可能であることを覚えておいてください。

latestbooks = Book.objects.all().order_by('-added')
latestvideos = Video.objects.all().order_by('-added')

latest = list(latestbooks) + list(latestvideos)
latest_sorted = sorted(latest, key=lambda x: x.added, reverse=True)

アップデート

異なる属性名で作業している場合でも、それは可能ですが、醜くなり始めます。これは、2つ以上のバリエーションではおそらく機能しません。

sorted(latest, key=lambda x: x.added if hasattr(x, 'added') else x.desadded, reverse=True)
于 2012-07-24T17:16:52.347 に答える