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'
スタックトレースまたはでAttributeErrorが発生し'unicode' object has no attribute 'profile'
ます。
get_field()のユーザーオブジェクトを文字列と連結しようとすると、「。」というエラーが表示されます'str' cannot concatenate with 'SimpleLazyObject'
。request.userがSimpleLazyObjectを返すのを読んでみましたが、どうすれば「ウェイク」できますか?しかし、それは役に立ちませんでした。
ユーザーがログインしていることを確認するためにミドルウェアを使用しているので、ユーザーがログインしていることを確認します。ユーザーオブジェクトの何が問題になっていますか?'__unicode__'
ユーザーオブジェクトにタイプがあるとdjangoが言うのはなぜですか 。
前もって感謝します!