在 Django 中获取模型表单的保存对象?

0rh*_*asi 5 python django django-forms modelform

我只想在用 Django 中的模型表单发布后访问模型详细信息。这家伙也问过同样的问题,但是当我尝试接受的答案时,它不返回任何类型值。

这是我在“views.py”中的代码:

if request.method == 'POST':
    if request.user.is_authenticated():
        form = PostStoryForm(request.POST)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.author = request.user
            new_post = obj.save()
            print(new_post)
Run Code Online (Sandbox Code Playgroud)

上面的代码成功地将表单保存到数据库中,但“new_post”变量为“None”。例如,当我尝试访问模型中的字段“new_post.title”时,它返回“AttributeError”,表示“NoneType”对象没有属性“title”

我究竟做错了什么?

tri*_*ixn 8

模型save()方法不返回实例

obj.author = request.user
obj.save() # this does not return anything. It just saves the instance it is called on.
Run Code Online (Sandbox Code Playgroud)

您的实例已有该author集合。

要访问尚未设置的自动填充字段,您必须在保存后再次从数据库中获取它。当您调用的实例save()之前不存在时,就是这种情况。

new_obj = MyModel.objects.get(id=obj.id)
Run Code Online (Sandbox Code Playgroud)