You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ORM查询中关联模型反向引用隐式命名规则疑问

Django反向关联默认命名规则说明

核心原因

Django 对未手动指定related_name参数的外键字段,会自动生成反向关联名称,生成规则为直接将子模型的类名全部转换为小写,不会自动将驼峰命名转换为蛇形命名。

你示例中的子模型类名为ChildSomething,全小写后得到的默认反向关联名就是childsomething,所以在Parent侧做聚合查询时需要用这个名称。你直觉想到的child_something是自行将驼峰类名转蛇形的结果,不符合Django的默认规则,因此会触发字段不存在的报错。

你贴出的报错信息也符合这个规则:你写的user_translation无法被识别,可选选项中存在的usertranslation正是子模型类名UserTranslation全小写后的结果。

自定义反向关联名的方案

如果想要使用符合你习惯的蛇形命名作为反向关联名,可以在定义外键时主动指定related_name参数:

class ChildSomething(models.Model):
    # 这里指定related_name后,Parent侧就可以用child_somethings做反向查询
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE, related_name='child_somethings')
    data = models.CharField(max_length=5, choices=chromosome_identities)

配置后你就可以用Count('child_somethings')完成聚合操作,符合日常命名习惯。

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03