related_name 这里不太懂,课堂老师写的这个和Profile和表名称还有方面名称都不一样呢?

related_name 这里不太懂,课堂老师写的这个和Profile和表名称还有方面名称都不一样呢?

class UserProfile(CommonModel):
SEX_CHOICES=(
(0,'未知'),
(1,'男'),
(2,'女'),
)
user=models.OneToOneField(User,verbose_name='关联用户',related_name='Profile',on_delete=models.CASCADE)
username=models.CharField('用户名称',max_length=128,unique=True)
real_name=models.CharField('真实姓名',max_length=128,null=True,blank=True)
sex=models.SmallIntegerField('性别',default=0,choices=SEX_CHOICES)
maxim=models.CharField('用户格言',max_length=128,null=True,blank=True)
address=models.CharField('用户地址',max_length=128,null=True,blank=True)

class Meta:
db_table='accounts_user_profile'


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!UserProfile类对应的表名是accounts_user_profile,用于存储用户详细信息,用户详细信息和用户是一对一的关系,User模型对象通过related_name可以访问到UserProfile中的字段值

比如,在用户表和用户详细信息表中有如下数据记录

https://img1.sycdn.imooc.com//climg/618de964090ca6cd07360115.jpg

https://img1.sycdn.imooc.com//climg/618de937092f1fae04400117.jpg

https://img1.sycdn.imooc.com//climg/618dec1409f249fb08570149.jpg

relate_name也可以定义为其他值,比如user=models.OneToOneField(User,verbose_name='关联用户',related_name='myprofile',on_delete=models.CASCADE),通过User模型对象访问UserProfile字段时,relate_name也要写成myprofile,如

user_obj = User.objects.get(username="xiaomu")
user_obj.myprofile.nickname


祝:学习愉快!

  • 热爱编程学习 提问者 #1
    user = models.OneToOneField(User, =,
                                =,
                                =models.CASCADE)

    这个语句的profile 这个名字可以自己随便取得对不?


    2021-11-12 19:14:08
  • 同学,你好!是的,related_name可以自己取名字,profile可以替换成其他名字。祝:学习愉快!
    2021-11-13 10:35:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师