如何在保存后访问 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()