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

