2012-12-20 22 views
6

でモデルを保存します(私は後で更新することができます)。私はそれがUserモデルで定義されたユーザーではないので、DjangoはAnonymousUserを保存しないであろうことを推測Djangoは、私はDjangoのモデルを持っている匿名ユーザー

ValueError: Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x1b498d0>": "Project.user" must be a "User" instance. 

:私がログインしていないよしかし、私はこのエラーを取得します。匿名ユーザーをUserモデルに追加する必要がありますか、何か不足していますか?

大変助かりました。

答えて

9

userフィールドはForeignKeyです。つまり、のユーザーを参照する必要があります。定義により

は、AnonymousUserには、ユーザーではありません:ジャンゴで、AnonymousUserAAnonymousUserB一切ありません。それらはすべて同じです:AnonymousUser

結論:UserForeignKeyAnonymousUserを入れることはできません。


あなたの問題を解決するには、しかし非常に簡単です:Userが匿名であるとき、単にフィールドを空白のままにします。これを行うには、許可する必要があります:

user = models.ForeignKey(User, blank = True, null = True) 
+0

大丈夫です。だから 'AnonymousUser'で' user = request.user'を実行すると、フィールドは空白になり、例外は発生しません。 –

+0

フィールドに不適切なデータを入力したため、例外が発生します。 'request.user.is_authenticated():project.user = request.user'を実行するだけです。 –

+0

' null-True'を追加する必要があります。 –

関連する問題