我有一个 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
模型中吗?还是我漏掉了什么?任何帮助都非常感激。
AnonymousUser
上执行user=request.user
,那么该字段将为空,并且不会引发任何异常? - Darwin Techif request.user.is_authenticated(): project.user = request.user
即可。 - Thomas Orozconull-True
,因为该字段不能为null
? - Darwin Technull = True
影响的是空值的存储方式,而不是是否可以存储。你可以添加它,但这里不会有任何变化。 - Thomas Orozco