次のように定義されたカテゴリモデルがあります。
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 人にすることもできます。
クエリを編集して、カテゴリ ツリーを振り返るにはどうすればよいですか?