姜戈。 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 分类查询的主要内容,如果未能解决你的问题,请参考以下文章