Dar*_*ech 12 django django-models django-views django-authentication
我有一个Django模型:
class Project(models.Model):
user = models.ForeignKey(User)
zipcode = models.CharField(max_length=5)
module = models.ForeignKey(Module)
Run Code Online (Sandbox Code Playgroud)
在我的views.py中:
def my_view(request):
...
project = Project.objects.create(
user=request.user,
product=product_instance,
...
)
project.save()
Run Code Online (Sandbox Code Playgroud)
我希望能够将用户保存为经过身份验证的用户或AnonymousUser(我稍后可以更新).但是,如果我没有登录,我会收到此错误:
ValueError: Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x1b498d0>": "Project.user" must be a "User" instance.
Run Code Online (Sandbox Code Playgroud)
我猜Django不会保存,AnonymousUser因为它不是User模型中定义的User .我是否需要将匿名用户添加到User模型中,或者我错过了什么?
任何协助非常感谢.
Tho*_*zco 12
该user领域是一个ForeignKey.这意味着它必须引用一些用户.
根据定义,AnonymousUser是没有用户:在Django,没有AnonymousUserA和AnonymousUserB.他们都是一样的:AnonymousUser.
结论:你不能放入AnonymousUser一个User ForeignKey.
您的问题的解决方案非常简单:当User匿名时,只需将该字段留空即可.要做到这一点,你需要允许它:
user = models.ForeignKey(User, blank = True, null = True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3584 次 |
| 最近记录: |