0

次のように定義されたカテゴリモデルがあります。

class Category(models.Model):
    number = models.PositiveIntegerField()
    name = models.CharField(max_length=200)

    parent = models.ForeignKey('self', blank=True, null=True)

    def __unicode__(self):
        name = unicode(self.name)
        if self.parent:
            name =  unicode(self.parent) + u'-->' + name
        return name

カテゴリは、最大 3 レベルの親を持つことができます (カテゴリ 1 -> カテゴリ 2 -> カテゴリ 3 -> カテゴリ 4)。

データベース内のすべてのアイテムを表示する必要がありますが、場所 == Ebay の場合に限り、ベース カテゴリ 14 を除外します。

私が使用していた:

    query = Q(category__number=14) & ~Q(location__name="EBAY")
    queryset.exclude(query)

アイテムのカテゴリが 14->15->42->16 の場合、返されるカテゴリ番号は 16 です。最初のカテゴリ レベルが必要ですが、親がいくつあるかわかりません。親は 0 にすることも、最大 3 人にすることもできます。

クエリを編集して、カテゴリ ツリーを振り返るにはどうすればよいですか?

4

1 に答える 1

0

Django は SQL に依存しないツリー クロールを行いませんが、モデル ツリー ライブラリはここにあります。

再帰的なルックアップの場合、生の SQL またはライブラリを django-mptt または django-treebeard として使用することができます。

mptt は最新のようです。

于 2013-03-07T16:53:04.260 に答える