2017-02-04 49 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在問題中提到了它。 –

相關問題