django-mpttを使用して、アイテムがあるカテゴリのみを取得します

ニック

サンプル構造:

すべて大文字:カテゴリ

混合ケース:アイテム

ROOT ├── BOOKS │   ├── FICTION │   │   └── CLASSICS │   └── NON-FICTION ├── CLOTHING └── ELECTRONICS ├── LAPTOPS ├── PHONES │   ├── APPLE │   │   ├── iPhone 6 │   │   ├── iPhone 6 Plus │   │   ├── iPhone 6S │   │   └── iPhone 6S Plus │   ├── MOTOROLA │   │   ├── Moto G4 │   │   ├── Moto G4 Play │   │   ├── Moto G4 Plus │   │   └── Moto X │   └── SAMSUNG └── TABLETS └── APPLE

インデックスページに「ELECTRONICS」カテゴリのみを表示させようとしています。「CLOTHING」カテゴリは空であるため表示されません。また、「BOOKS」カテゴリも子カテゴリはありますがアイテムがないため表示されません。

同様に、「ELECTRONICS」ページには「PHONES」カテゴリのみを表示する必要があります。「LAPTOPS」カテゴリは空であるため表示されません。また、「TABLETS」カテゴリも表示されません。これは、子カテゴリがありますが、その子カテゴリにはアイテムがないためです。

同様に、「SAMSUNG」カテゴリは空であるため、「PHONES」ページには「APPLE」カテゴリと「MOTOROLA」カテゴリのみが表示されます。

インデックスページで試したこと:

Category.objects.root_nodes().exclude(children__isnull=True)

これにより、「CLOTHING」カテゴリは正常に除外されますが、「BOOKS」カテゴリは除外されません。これが機能しない理由は理解できますが、代わりに何をすべきかわかりません。

ゴンツ

これは、django-mpttマネージャーのメソッドとフィールドだけでは不可能だと思います。

すべてのカテゴリをアイテムでフィルタリングするクエリを考え出し(のようなものを考えてくださいSELECT DISTINCT category_id FROM items)、それらのカテゴリのルートノードのセットを見つけることができます。

悪いニュースは、おそらくあなたが説明したユースケースではクエリがうまく機能しないことです。おそらく、非正規化フィールド(サブツリーアイテム数など)を用意する余裕があるかelasticsearch、この種のタスクのような検索エンジンを使用できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Django:mptt-djangoを使用して、製品を多対多の関係にあるカテゴリに割り当てます

分類Dev

django-mpttはadd_related_countのアイテムをカウントしますか?

分類Dev

Django-VueテンプレートでDRFを使用してシリアル化するMPTT

分類Dev

Django rest Framework-アイテムのリストが必要ですが、タイプ「QuerySet」を取得しました

分類Dev

Djangoはカテゴリ別にいいねの数を取得します

分類Dev

herokuのdjangoアプリがワーカータイムアウトエラーを取得しています

分類Dev

カレンダーのJavascript Djangoの日付をクリックして、日付でアイテムを取得します

分類Dev

Django-jQueryajaxを使用してリストアイテムのid / pkをビューに渡します

分類Dev

Djangoテンプレート。カテゴリのタイトルを取得する

分類Dev

django-mpttを使用してネストされたコメントシステムを作成する方法

分類Dev

axiosとdjangoを使用してTODOアプリからアイテムを削除しようとしています

分類Dev

Django:「注目の」アイテムを表示していますか?

分類Dev

Djangoで同じカテゴリのすべての投稿を取得する方法

分類Dev

動的に作成されたカテゴリをDjango管理サイトのモデルとして使用し、モデルを複数回登録します

分類Dev

Django多対多:記事のリストからカテゴリのリストを取得します

分類Dev

クエリセットの2番目のアイテムをhtmlファイルで取得します(Django)

分類Dev

Djangoでカテゴリ別にアイテムを並べ替える

分類Dev

Djangoのデータベースから特定のカテゴリの商品(女性)の商品のみを取得したい

分類Dev

Djangoは、リスト内の*すべての*アイテムのクエリセット__inを除外します

分類Dev

Django-mptt 管理カテゴリ

分類Dev

Django-djangoテンプレートのiterableからアイテムを取得します

分類Dev

djangoを使用してカテゴリ(多対多のフィールド)でコンテンツをフィルタリングする

分類Dev

Djangoを使用して検索したアイテムのデータを表示する

分類Dev

Django-ORM:呼び出しを最小限に抑えながら、複数のアイテムがDBにあるかどうかを確認します

分類Dev

Django:ページ上のカテゴリから投稿をフィルタリングして表示する方法

分類Dev

djangoクエリを使用してアクティブなタイムゾーンの日時を返す

分類Dev

Django | カテゴリを使用して質問をフィルタリングしません

分類Dev

Django、存在するかどうかを確認しますが、プロパティの配列からの多くのアイテムについて

分類Dev

DJangoテンプレートのオブジェクト配列の最初のアイテムを取得します

Related 関連記事

  1. 1

    Django:mptt-djangoを使用して、製品を多対多の関係にあるカテゴリに割り当てます

  2. 2

    django-mpttはadd_related_countのアイテムをカウントしますか?

  3. 3

    Django-VueテンプレートでDRFを使用してシリアル化するMPTT

  4. 4

    Django rest Framework-アイテムのリストが必要ですが、タイプ「QuerySet」を取得しました

  5. 5

    Djangoはカテゴリ別にいいねの数を取得します

  6. 6

    herokuのdjangoアプリがワーカータイムアウトエラーを取得しています

  7. 7

    カレンダーのJavascript Djangoの日付をクリックして、日付でアイテムを取得します

  8. 8

    Django-jQueryajaxを使用してリストアイテムのid / pkをビューに渡します

  9. 9

    Djangoテンプレート。カテゴリのタイトルを取得する

  10. 10

    django-mpttを使用してネストされたコメントシステムを作成する方法

  11. 11

    axiosとdjangoを使用してTODOアプリからアイテムを削除しようとしています

  12. 12

    Django:「注目の」アイテムを表示していますか?

  13. 13

    Djangoで同じカテゴリのすべての投稿を取得する方法

  14. 14

    動的に作成されたカテゴリをDjango管理サイトのモデルとして使用し、モデルを複数回登録します

  15. 15

    Django多対多:記事のリストからカテゴリのリストを取得します

  16. 16

    クエリセットの2番目のアイテムをhtmlファイルで取得します(Django)

  17. 17

    Djangoでカテゴリ別にアイテムを並べ替える

  18. 18

    Djangoのデータベースから特定のカテゴリの商品(女性)の商品のみを取得したい

  19. 19

    Djangoは、リスト内の*すべての*アイテムのクエリセット__inを除外します

  20. 20

    Django-mptt 管理カテゴリ

  21. 21

    Django-djangoテンプレートのiterableからアイテムを取得します

  22. 22

    djangoを使用してカテゴリ(多対多のフィールド)でコンテンツをフィルタリングする

  23. 23

    Djangoを使用して検索したアイテムのデータを表示する

  24. 24

    Django-ORM:呼び出しを最小限に抑えながら、複数のアイテムがDBにあるかどうかを確認します

  25. 25

    Django:ページ上のカテゴリから投稿をフィルタリングして表示する方法

  26. 26

    djangoクエリを使用してアクティブなタイムゾーンの日時を返す

  27. 27

    Django | カテゴリを使用して質問をフィルタリングしません

  28. 28

    Django、存在するかどうかを確認しますが、プロパティの配列からの多くのアイテムについて

  29. 29

    DJangoテンプレートのオブジェクト配列の最初のアイテムを取得します

ホットタグ

アーカイブ