0

簡単に言えば、私はポリモーフィック モデルと、通常どおりに実行できないいくつかのクエリを使用しているため、クエリ結果を通常のリストに変換する必要があります。次に、ページネーターを使用して結果をページングします。

物事を大局的に見ると、通常は次のようにします。

instances = Model.objects.filter(field=True)
Paginator(instances, 10).page(1)

私の場合:

instances = [x for x in Model.objects.filter(field=True)]
Paginator(instances, 10).page(1)

ORM が遅延しているため、通常、ページングされると、生のクエリには OFFSET と LIMITS が含まれるため、クエリが非常に軽量になります。しかし、私の場合、クエリ結果をループしているため、実際にはすべてのインスタンスのデータベースにアクセスしてから、ページネーションを適用しています。

印刷して生のクエリを読み取ろうとしましconnection.queriesたが、ポリモーフィック モデルのクエリを読み通すのは頭痛の種です。

うまくいけば、これは django ORM の根性を知っている人にとって簡単な質問になるでしょう。

編集

なぜリストに変換する必要があるのか​​ 知りたい人は、このリンクを見て、私の問題を探してくださいhttps://github.com/bconstantin/django_polymorphic/issues/19以下のように、ループ内のタグとフィルター:

_items = []
for tag in tags:
  for item in items.filter(tags__slug = tag):
    # get unique items
    if item not in _items:
      _items.append(item)

# sadly the following doesn't work due to polymorphic query limitation
# _items = None
# for item in items.filter(tags__slug = tag):
#   _items = _items | items.filter(tags__slug = tag)
4

0 に答える 0