Django的。 Q查询类别

时间:2013-03-07 16:49:06

标签: python django django-q

我有一个类别模型定义为:

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.我需要第一个类别级别,但我不知道有多少个父级。没有,或最多3个父母。

如何编辑查询以回顾我的类别树?

1 个答案:

答案 0 :(得分:0)

Django不进行SQL独立树爬行,但模型树库是在这里。

对于递归查找,您可能希望使用原始sql或库作为django-mptt或django-treebeard。

mptt似乎更新了。