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

时间:2017-02-04 02:21:00

标签: python django django-forms modelform

我只想在Django中使用模型表单发布之后访问模型详细信息。这个guy也问了同样的事情,但是当我尝试的时候 接受的答案,它没有返回任何类型的值。

以下是'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)

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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

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

您的实例已设置author

要访问尚未设置的自动填充字段,您必须在保存后再次从数据库中获取它。如果您之前调用save() on的实例尚未存在,则会出现这种情况。

new_obj = MyModel.objects.get(id=obj.id)