2017-02-04 79 views
1

我只是想在Django中使用模型表单发布模型细节。这guy也问过同样的事情,但当我尝试 接受的答案,它返回没有类型的值。在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) 

上面的代码的形式保存到数据库成功,但“new_post”变量是“无”。例如,当我尝试访问我的模型中的字段'new_post.title'时,它返回'AttributeError',其中说'NoneType'对象没有属性'标题'

我在做什么错了?

+0

我想我们也需要保存你的表格。 –

+1

'save()'模型不会像'save()'方法那样返回实例。 – trixn

回答

3

该机型save()方法不返回实例

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

您的实例已经有author集。

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

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

实例是'obj'。你可以尝试'print(obj.title)',它应该可以正常工作。 –

+0

你的意思是'obj.author'。我们不知道字段“标题”。 – trixn

+0

这可能是ModelForm中的一个字段。 OP在问题中提到了它。 –