我正在尝试将默认的 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/