我只想在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'
我做错了什么?
答案 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)