我正在尝试扩展 django 中的默认用户模型。
我定义了一个名为 Profile 的类。
# code in myapp/models/profile.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User)
field = models.CharField(max_length=30)
class Meta:
app_label="myapp"
在我的视图函数中,我调用了一个出现异常的方法:
def my_view_function(request):
field = get_field(request.user)
...
def get_field(user):
return user.profile.field
# also tried return user.get_profile().field with AUTH_PROFILE_MODULE in settings.py set to "myapp.Profile", still does not work.
我在堆栈跟踪'unicode' object has no attribute 'get_profile'
或'unicode' object has no attribute 'profile'
.
当我尝试将 get_field() 中的用户对象与字符串连接时,我收到一条错误消息'str' cannot concatenate with 'SimpleLazyObject'
。我尝试阅读request.user 返回一个 SimpleLazyObject,我该如何“唤醒”它?但这并没有帮助。
我正在使用中间件来确保用户已登录,因此我确定用户已登录。用户对象有什么问题?为什么 django 说用户对象有 '__unicode__'
类型。
提前致谢!