我有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传递它,但是我收到了关于序列化这个对象的错误。
答案 0 :(得分:1)
您正在使用filter
,它返回所有结果的列表,而不是get
,它只返回一个:
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()