加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django查询选择具有非零子项的父项

发布时间:2020-12-20 11:13:26 所属栏目:Python 来源:网络整理
导读:我有一个带有外键的模型,就像这样: class Concept(models.Model): name = models.CharField(max_length=200) category = models.ForeignKey('self') 但我无法弄清楚如何选择所有具有非零儿童价值的概念.这可能与django QuerySet API或我必须编写自定义SQL?
我有一个带有外键的模型,就像这样:

class Concept(models.Model):
    name = models.CharField(max_length=200)
    category = models.ForeignKey('self')

但我无法弄清楚如何选择所有具有非零儿童价值的概念.这可能与django QuerySet API或我必须编写自定义SQL?

解决方法

如果我理解正确,每个概念可能有另一个概念作为父级,并将其设置到类别字段中.
换句话说,具有至少一个孩子的概念将在类别字段中至少引用一次.

一般来说,这在Django中并不容易;但是如果你没有太多的类别,你可以考虑查询SELECT * FROM CONCEPTS WHERE CONCEPTS.ID IN(SELECT CATEGORY FROM CONCEPTS); – 这是你可以用Django轻松映射的东西:

Concept.objects.filter(pk__in=Concept.objects.all().values('category'))

请注意,如Django documentation所述,此查询可能在某些数据库上存在性能问题;因此你应该把它作为一个列表:

Concept.objects.filter(id__in=list(Concept.objects.all().values('category')))

但请注意,这可能会遇到一些数据库限制 – 例如,Oracle在此类列表中最多允许1000个元素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读