python - 默认用户模型 OneToOneField 属性错误

标签 python django django-models django-views

我正在尝试将默认的 Django 用户模型与我为存储额外信息而创建的另一个模型连接。但即使在执行了所有正确的步骤之后,我仍然收到错误消息。我花了很多时间试图弄清楚,希望你们能弄清楚并帮助我。 (你们可能会比我聪明得多)

这里是导入命令:

from django.contrib.auth.models import User

这是与预制模型的集成:

class User_Info(models.Model):
    user = models.OneToOneField(User,null = True, on_delete = models.CASCADE)

这是我正在使用的 View :

def userPage(request):
    _user_ = request.user.User_Info.all()
    trades = request.user.User_Info.trade_set.all()
    total_trades = trades.count()
    context = {"_user_" : _user_,"trades" : trades, "total_trades" : total_trades}
return render(request, "accounts/user.html", context)

这是我遇到的错误:

/user/的属性错误

“用户”对象没有属性“User_Info”

请求方式:GET

请求网址:http://127.0.0.1:8000/user/

Django 版本:3.1.2异常

类型:属性错误

异常值:'User' 对象没有属性 'User_Info'

如果您需要任何更多信息,请告诉我,我将非常乐意提供帮助!

感谢您的宝贵时间! :)

最佳答案

您已经将类名用作属性,所以我认为您会发现在这样的字段上设置 related_name 参数真的很有帮助。

例如;

class User_Info(models.Model):
    user = models.OneToOneField(User, null=True, related_name='info', on_delete = models.CASCADE)

然后您可以通过执行操作在 View 中访问它;

def userPage(request):
    user = request.user
    user_info = user.info
    
    context = {
        "user" : user,
        "user_info" : user_info,
    }
    return render(request, "accounts/user.html", context)

您可以在此处阅读关于related_name 的文档; https://docs.djangoproject.com/en/3.1/ref/models/fields/#django.db.models.ForeignKey.related_name

关于python - 默认用户模型 OneToOneField 属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65615970/

相关文章:

django-models - 模型类 "Name"如何在管理页面下变成复数 "Names"?

python - 几秒钟后 Subprocess.Popen 停止(或出现故障)

python - Django View 发送带有正确 header 的空回复

Django:select_related() 的用法和执行时间性能

Django Angular Facebook 身份验证

python - 如何在 django 中设置该字段唯一?

python - 在 Django 中测试时的模型创建顺序?

python - 使用 lxml 解析 HTML 中的段落

python - "python"环境变量设置在哪里?

python - django ORM - 在 M2M 上排除,F 功能不起作用