【发布时间】:2019-01-30 02:33:11
【问题描述】:
我有一个经常性的类别模型(每个类别都可以有一个父类别),我也有带有 ForeignKey 到“核心类别”的产品模型,如下所示。是否有可能查询顶级类别(非核心)中的所有产品?
例如,我的类别树是:
---Sales (main) (parent = None)
---Crm (core) (parent = Sales)
---Marketing Automation (core) (parent = Sales)
---AI (parent = Sales)
---BOTS (core) (parent = AI)
---NLP (core) (parent = AI)
我要查询“Sales”或“AI”中的所有产品
型号:
class Category(models.Model):
name = models.CharField(max_length=255)
link = models.URLField(max_length=255, null=True, blank=True)
core = models.BooleanField()
main = models.BooleanField()
parent = models.ForeignKey('self', on_delete=models.SET_NULL,
null=True, default=None)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=255)
link = models.URLField(max_length=255, null=True, blank=True)
category = models.ForeignKey(Category, on_delete=models.SET_NULL,
null=True, default=None)
def __str__(self):
return self.name
感谢您的帮助!
编辑:我认为这种特殊情况的最佳等价物是文件夹中的文件。单个文件(产品)仅知道其父目录(核心类别),但该父目录可能是其父目录的子文件夹。我想查询子目录中所有文件(产品)的顶级文件夹(类别)。
【问题讨论】:
-
到目前为止你有什么尝试?
-
@SachinKukreja 到目前为止,我尝试了一个循环,在该循环中我检查了哪些类别具有特定的父级,并深入了解上级父级,最后将所有“核心”存储在一个数组中并检查它们的产品。但我很好奇是否有一个没有循环的查询解决方案。
标签: python django model querying