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

Django:如何从派生类获取当前用户的address字段?

解决方法

因为你用的是Django的多表继承,User和Patient是两张独立的表,Patient表会自动生成指向User的外键。request.user是User类的实例,要获取address字段,需要关联到对应的Patient对象,常用方式有两种:

  • 直接通过反向关联属性获取
    Django会自动为父类生成一个小写子类名的反向关联属性,可直接调用:

    # 先判断当前用户是患者
    if request.user.is_Patient:
        address = request.user.patient.address
    

    注意:如果当前User没有对应的Patient记录,会抛出Patient.DoesNotExist异常,建议添加异常处理:

    try:
        address = request.user.patient.address
    except Patient.DoesNotExist:
        address = "未填写地址"  # 或按业务逻辑做其他处理
    
  • 通过查询获取
    主动查询Patient表,通过用户ID匹配:

    from django.shortcuts import get_object_or_404
    
    if request.user.is_Patient:
        patient = get_object_or_404(Patient, pk=request.user.pk)
        address = patient.address
    

    这种方式如果找不到对应记录,会直接返回404响应,适合必须确保用户是患者的场景。

另外建议把is_Patient字段改成is_patient(符合Python蛇形命名规范),避免和类名混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:10:21