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
相关产品推荐
相关产品推荐

