如何在保存后访问Django模型实例?

时间:2017-03-13 22:44:59

标签: django foreign-key-relationship

我有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传递它,但是我收到了关于序列化这个对象的错误。

1 个答案:

答案 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()