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

Django中同一模型使用相同related_name是否合规?如何查询用户子女?

嘿,这个问题问得很实用,我来给你详细拆解:

关于Django模型中相同related_name的疑问解答

1. 两个ForeignKey设置相同related_name是否合规?

完全合规!Django明确支持多个ForeignKey字段指向同一个模型时使用相同的related_name。这种设置特别适合你这种“父母双方向关联到子女档案”的场景——Django会自动把所有匹配的关联实例(不管是通过father还是mother字段关联到当前User的Profile)合并到同一个反向查询集中,不用你再分别处理两个不同的反向关联。

2. 如何获取某个User实例的子女?

假设你有一个User实例(比如命名为my_user),直接通过反向关联的children属性就能拿到所有以他/她为父亲或母亲的Profile实例:

# 获取所有关联的Profile记录(即把该User列为父/母的子女档案)
children_profiles = my_user.children.all()

如果你的Profile模型和User是一对一绑定的(比如每个User对应唯一的Profile,用来存储个人亲属信息),想要直接拿到子女对应的User对象,可以用链式查询:

from django.db.models import Q

# 直接筛选出所有将my_user列为父亲或母亲的User实例
children_users = User.objects.filter(Q(profile__father=my_user) | Q(profile__mother=my_user))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:59:20