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

标签 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”

我做错了什么?

最佳答案

模型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)

关于python - 在 Django 中获取模型表单的保存对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035791/

相关文章:

python - 从python中的dict更新数据类字段

python - 停止 python 将 json 文件写入一行

python - 我的 Django 应用程序中一个不断增长的大表需要更好的性能策略

django - 南 : Why the "column <colname> contains null values" error when a valid one-off default value has been provided

python - 从 NLTK 中的 Text.similar() 和 ContextIndex.similar_words() 生成的单词按频率排序?

python - 更新导入的对象

django - 尝试在docker-machine cookiecutter-django中运行docker-compose时出现``关系不存在''错误

django - 无法解析 : type object 'Member' has no attribute '_default_manager, django 1.10

python - 将动态数量的字段添加到 Django 管理表单

python - Django self.cleaned_data 不工作