14

私はDjangoモデルを持っています:

class Project(models.Model):
    user = models.ForeignKey(User)
    zipcode = models.CharField(max_length=5)
    module = models.ForeignKey(Module)

私のviews.pyで:

def my_view(request):  
    ...
    project = Project.objects.create(
                  user=request.user,
                  product=product_instance,
                  ...
              )
    project.save()

AnonymousUserユーザーを認証済みユーザーまたは(後で更新できる)として保存できるようにしたい。ただし、ログインしていない場合、次のエラーが表示されます。

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

モデルAnonymousUserで定義されているユーザーではないため、Djangoは保存しないと思います。User匿名ユーザーをUserモデルに追加する必要がありますか、それとも何か不足していますか?

どんな支援も大歓迎です。

4

1 に答える 1

15

userフィールドはForeignKey. つまり、一部の userを参照する必要があります。

定義上、AnonymousUserno userです。Django では、AnonymousUserAandはありませんAnonymousUserB。それらはすべて同じです: AnonymousUser.

AnonymousUser結論: をに入れることはできませんUser ForeignKey


ただし、問題の解決策は非常に簡単です。Userが匿名の場合は、フィールドを空白のままにしてください。そのためには、許可する必要があります。

user = models.ForeignKey(User, blank = True, null = True)
于 2012-12-20T01:18:03.363 に答える