python - OneToOneField Django的反向关系?
问题描述
我正在使用用户模型
from django.contrib.auth.models import User
UserProfile 模型扩展了 User 模型
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='userprofiles')
avatar = models.FileField('img',upload_to='./static/image/')
我需要获取用户的头像,我正在做类似的事情
user = User.objects.get(pk=1)
user.userprofiles
但这给我带来了错误
RelatedObjectDoesNotExist:用户没有用户配置文件。
痕迹:
In [5]: user = User.objects.get(pk=1)
In [6]: user.userprofiles
---------------------------------------------------------------------------
RelatedObjectDoesNotExist Traceback (most recent call last)
<ipython-input-6-2253b19e792d> in <module>()
----> 1 user.userprofiles
C:\Program Files\Anaconda3\lib\site-packages\django\db\models\fields\related_des
criptors.py in __get__(self, instance, cls)
405 "%s has no %s." % (
406 instance.__class__.__name__,
--> 407 self.related.get_accessor_name()
408 )
409 )
RelatedObjectDoesNotExist: User has no userprofiles.
解决方案
您在以下内容中有错字:
user = models.OneToOneField(User, related_name='userprofiles')
# userprofiles with 's'
user.userprofile
然而,您试图在没有 s 的情况下访问它
要么删除s
,related_name='userprofiles'
要么添加s
: --> user.userprofiles以访问Userprofile
.
推荐阅读
- excel - 一次将多个单元格引用从相对更改为绝对 ($)
- powershell - Powershell excel替换总是返回true
- php - 如何在php中编写前缀唯一优惠券代码
- swift - 如何快速检查符合协议的实例的类?
- javascript - 如何在 Laravel 完整日历上转到特定日期?
- elasticsearch - Kibana 6.4 作为守护进程运行
- python - Tensorflow eval() - (a/b).eval() 和 (a.eval()/b.eval()) 的不同结果
- android - RxJava Android 方向改变和网络请求
- angular - 角传单弹出点击不起作用?
- delphi - 如何手动安装 Delphi JEDI