dra*_*oon 5 django django-queryset hierarchical-data
我有一个带有外键的模型,如下所示:
class Concept(models.Model):
name = models.CharField(max_length=200)
category = models.ForeignKey('self')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何选择所有具有非零子值的概念。这可以通过 django QuerySet API 实现吗?或者我必须编写自定义 SQL?
如果我理解正确的话,每个人都Concept可能有另一个人Concept作为父母,并且这被设置到该category字段中。
换句话说,Concept至少有一个孩子的对象将在该category字段中至少被引用一次。
一般来说,这在 Django 中并不容易实现;但是,如果您没有太多类别,您可以考虑类似的查询SELECT * FROM CONCEPTS WHERE CONCEPTS.ID IN (SELECT CATEGORY FROM CONCEPTS);- 这是您可以使用 Django 轻松映射的内容:
Concept.objects.filter(pk__in=Concept.objects.all().values('category'))
Run Code Online (Sandbox Code Playgroud)
请注意,正如Django 文档中所述,此查询在某些数据库上可能会出现性能问题;因此你应该把它作为一个列表:
Concept.objects.filter(id__in=list(Concept.objects.all().values('category')))
Run Code Online (Sandbox Code Playgroud)
但请注意,这可能会遇到某些数据库限制——例如,Oracle 允许此类列表中最多包含 1000 个元素。
| 归档时间: |
|
| 查看次数: |
3406 次 |
| 最近记录: |