python - Django:查询没有子元素的自引用对象

标签 python django self-reference

我有以下 Django 模型:

class Category(models.Model):
    name = models.CharField(maxlength=20)
    parent = models.ForeignKey('self', null=True)

注意字段parent是自引用,即一个类别可以有一个父级。

我怎样才能找到所有 Category没有子类别的对象?

最佳答案

您可以使用 isnull related_query_name :

class Category(models.Model):
    # ...
    parent = models.ForeignKey('self', null=True, related_name='children', related_query_name='child')

Category.objects.filter(child__isnull=True)

在这里,我建议至少指定一个有意义的 related_name !
如果您仅指定 related_name , related_query_name默认为该名称(此处: children )。如果两者都没有指定,则 rqn 默认为模型名称:category , 不是 category_set
Category.objects.filter(category__isnull=True)  # not so informative

关于python - Django:查询没有子元素的自引用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40743308/

相关文章:

python - 将字典列表分解为通用元素的字典

Python Pandas Dataframe 日期时间列分隔函数

django - 无法解决页面内容的 Django 测试

C# 泛型自引用声明

ssis - 如何导入具有自关系的表

python - flask ,不能迁移。 'SQLALCHEMY_DATABASE_URI' ).replace ('%' , '%%' )) AttributeError : 'NoneType' object has no attribute 'replace'

python - Dask 广播在计算图中不可用

django - 使用相关名称查询 manyToMany 字段

python - Django:根据 object.owner 检查请求用户

list - Haskell:处理死锁的自引用列表