0

このような方法でクエリセットを注文する必要があります。

>>tag_queryset
[tag4, tag3, tag1, tag2]

デフォルトのクエリセットは次のとおりです。

>>Tag.objects.all()
[tag1, tag2, tag3, tag4]

だから私は次のような特定のクエリセットを持っています:

 >>tags_to_place_first
 [tag4, tag3]

そして、それを Tag モデルの all() オブジェクトの共通クエリセットとマージして、結果のシーケンスの最初に tag4 と tag3 を配置します。

#something like this
>>Tag.objects.all().placeFirst(tags_to_place_first)
[tag4, tag3, tag1, tag2]

パフォーマンスを妨げない、これに対する良い解決策を誰かが提供できますか?

4

2 に答える 2

-1

次のようなクエリセットをマージできます。

merged_tags_qs = tags_to_place_first | other_tags

リストまたは単一インスタンスに有効:

merged_tags_qs = [tag4, tag3] | other_tags
merged_tags_qs = tag4 | other_tags

これは、django の魔法の機能の 1 つです:D

クエリセットからタグを削除する場合tags_to_place_first:

other_tags = Tag.objects.exclude(pk__in=[tag.pk for tag in tags_to_place_first])
merged_tags_qs = tags_to_place_first | other_tags
于 2013-08-16T09:49:49.530 に答える