姜戈。 Q 分类查询

Posted

技术标签:

【中文标题】姜戈。 Q 分类查询【英文标题】:Django. Q Query on categorys 【发布时间】:2013-02-22 23:47:33 【问题描述】:

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

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)

如果一个item有14->15->42->16的分类,返回的分类号是16。我需要第一个分类级别,但是不知道有多少个父级。可以没有,或最多 3 个父母。

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

【问题讨论】:

【参考方案1】:

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

https://github.com/django-mptt/django-mptt https://tabo.pe/projects/django-treebeard/docs/tip/

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

mptt 似乎是最新的。

【讨论】:

以上是关于姜戈。 Q 分类查询的主要内容,如果未能解决你的问题,请参考以下文章

姜戈。 Q 对象动态生成

姜戈。 Q() 如何真正起作用?

姜戈。如何优化数据库查询?

姜戈。数据库查询:一个字段不同

姜戈。如何在查询结果中添加字段?

姜戈。查询。用引号转义字符串错误