如何在保存后访问 Django 模型实例?
How to access a Django model instance after it has already been saved?
我有 2 个模型,一个称为 MyProfile,另一个用于待售商品。
在我看来,我正在尝试创建一个待售商品,但是当我设置作者(这是 MyProfile 的外键)时,出现错误。
views.py
active_user = MyProfile.objects.filter(user=david)
form.author = active_user
错误
ValueError: Cannot assign "<QuerySet [<MyProfile: david test test None>]>":
"Entry.author" must be a "MyProfile" instance.
我认为这里的问题是我试图将 MyProfile 的实例传递给 form.author,但我传递的是 QuerySet。所以我的问题是如何传递对象?
我正在django做一个项目,试图完全绕过django用户模型,所以回答的时候请记住这一点。我不是在尝试使用包含的 django 用户模型,我想弄清楚的是将 MyProfile 实例传递给 form.author 的解决方案,因为这是一个 ForeignKey 字段。
我以为我可以通过 request.session 传递它,但我在序列化此对象时遇到错误。
您正在使用 filter
,其中 returns 所有结果的列表,而不是 get
,其中 returns 只有一个:
active_user = MyProfile.objects.get(user=david)
外键字段需要 MyProfile 的实例,而不是列表。请记住,如果未找到任何结果,这将引发 MyProfile.DoesNotExist
异常。
这与过滤并仅抓取第一个元素大致相同:
active_user = MyProfile.objects.filter(user=david)[0]
# OR
active_user = MyProfile.objects.filter(user=david).first()
我有 2 个模型,一个称为 MyProfile,另一个用于待售商品。
在我看来,我正在尝试创建一个待售商品,但是当我设置作者(这是 MyProfile 的外键)时,出现错误。
views.py
active_user = MyProfile.objects.filter(user=david)
form.author = active_user
错误
ValueError: Cannot assign "<QuerySet [<MyProfile: david test test None>]>":
"Entry.author" must be a "MyProfile" instance.
我认为这里的问题是我试图将 MyProfile 的实例传递给 form.author,但我传递的是 QuerySet。所以我的问题是如何传递对象?
我正在django做一个项目,试图完全绕过django用户模型,所以回答的时候请记住这一点。我不是在尝试使用包含的 django 用户模型,我想弄清楚的是将 MyProfile 实例传递给 form.author 的解决方案,因为这是一个 ForeignKey 字段。
我以为我可以通过 request.session 传递它,但我在序列化此对象时遇到错误。
您正在使用 filter
,其中 returns 所有结果的列表,而不是 get
,其中 returns 只有一个:
active_user = MyProfile.objects.get(user=david)
外键字段需要 MyProfile 的实例,而不是列表。请记住,如果未找到任何结果,这将引发 MyProfile.DoesNotExist
异常。
这与过滤并仅抓取第一个元素大致相同:
active_user = MyProfile.objects.filter(user=david)[0]
# OR
active_user = MyProfile.objects.filter(user=david).first()