gpt4 book ai didi

Django使用匿名用户保存模型

转载 作者:行者123 更新时间:2023-12-04 01:00:48 25 4
gpt4 key购买 nike

我有一个 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.

我猜 Django 不会保存 AnonymousUser因为它不是 User 中定义的用户模型。我是否需要将匿名用户添加到 User模型,还是我错过了什么?

非常感谢任何帮助。

最佳答案

user字段是 ForeignKey .这意味着它必须引用某个用户。

根据定义,AnonymousUser没有用户:在 Django 中,没有 AnonymousUserAAnonymousUserB .他们都是一样的:AnonymousUser .

结论:你不能放 AnonymousUserUser ForeignKey .

不过,您的问题的解决方案非常简单:当 User是匿名的,只需将该字段留空。为此,您需要允许它:

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

关于Django使用匿名用户保存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com