django ModelForm save() 方法问题

2023-12-27

我有一个模型表格:

class SnippetForm(ModelForm):
    class Meta:
        model = Snippet
        exclude = ['author', 'slug']

我希望能够使用以下方法编辑特定实例:

def edit_snippet(request, snippet_id):
    #look up for that snippet
    snippet = get_object_or_404(Snippet, pk=snippet_id)
    if request.user.id != snippet.author.id:
        return HttpResponseForbidden()
    if request.method == 'POST':
        form = SnippetForm(data=request.POST, instance=snippet)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(snippet.get_absolute_url())
    else:
        form = SnippetForm(instance=snippet)
    return render_to_response(SNIPPET_EDIT_TEMPLATE,
                              {'form':form, 'add':False, 'user':request.user}, 
                              RequestContext(request))

请注意,在该行

form = SnippetForm(data=request.POST, instance=snippet)

,我创建了一个使用用户提供的数据的表单,并将其与使用主键(从 url 接收)找到的实例绑定。根据Django 文档 http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method,当我调用 save() 时,应使用 POSTED 数据更新现有实例。相反,我看到的是创建一个新对象并将其保存到数据库中。什么地方出了错?多谢。

【编辑】这实在是太尴尬了。代码确实没有任何问题。唯一搞乱整个事情的是我在模板中放入的操作(因为我使用相同的模板来添加和编辑片段)......非常感谢您的帮助,非常感谢。


我不明白为什么会发生这种情况。 django 是什么版本?

在任何情况下,您都可以手动强制更新并传递相应的参数。

form = SnippetForm(data=request.POST, instance=snippet, force_update=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django ModelForm save() 方法问题 的相关文章

随机推荐

  • XSLT 节点值比较

    如何将 IP 地址与家庭和姓名参考进行比较 使用 XSLT 文件 在详细信息中 我有一个 xml 文件 其中包含操作员站节点列表 每个操作员站都有其唯一的信息 因此 通过将第一个操作员站节点视为主站 比较所有剩余的从属操作员站信息 首先需要
  • HTTP 持久连接

    尝试使用 Linux 套接字接口用 C 语言实现一个简单的 HTTP 服务器时 我在我希望它具有的某个功能 即持久连接 方面遇到了一些困难 使用单独的 TCP 连接一次发送一个文件相对容易 但这似乎不是非常有效的解决方案 例如考虑多次握手
  • 字符串常量池中的 new String("") 会发生什么

    如果我创建一个字符串对象 String s new String Stackoverflow 将只在堆中创建 String 对象 或者也在 String 常量池中创建一个副本 提前致谢 如果调用 则只能将字符串放入常量池中intern或使用
  • 为什么 Moq 不运行重写的 ToString 方法?

    在下面的代码中为什么mockTest ToString 返回Null 编辑 在示例代码中添加注释以显示如何解决问题 Public Sub Main Try Dim test New TestClass If test ToString lt
  • 如何给Python程序添加暂停模式

    我已经开发了一个 Python 代码 正在寻找改进以及如何添加暂停选项 尽管我不知道更简单的方法 但我还是一遍又一遍地重复完全相同的行 import math pygame random sys turtle from itertools
  • mapView 已弃用方法 getZoomControls?

    我正在尝试让默认缩放控件显示在谷歌地图视图上 我在看this http mobiforge com developing story using google maps android代码 但 getZoomControls 已被弃用 我尝
  • WinRT 投影类型文档

    有一种东西叫做预测类型在 WinRT 中 例如 在元数据中 IXamlType UnderlyingType定义为 TypeName UnderlyingType get 然而 当在 C 应用程序中使用时 它会发生如下变化 Type Und
  • 自定义 Flask 管理行操作

    我想在烧瓶管理列表视图上的编辑和删除图标旁边添加另一个按钮 此外 我想将该行数据作为发布请求发送到路线 我知道我必须编辑admin model list html模板 但我不知道如何添加此功能 你能提供任何指导吗 您需要为您的视图定义自定义
  • 如何使用 Typesafe Activator UI 在开发模式下运行 play 项目

    我正在使用 Typesafe Activator 1 2 10 我使用模板 play scala 中的 activator ui 创建了一个新项目 当我单击开始时 游戏正在产品模式下运行 我想在开发模式下运行它 如何使用 activator
  • 将单元格位置字符串解析为行和列

    i have string col AB21 这是 Excel 单元格位置 我想将其解析为string column AB int row 21 我怎样才能做到这一点 string col AB21 int startIndex col I
  • x86指令编码表

    我正在重写我的汇编程序 同时我也对实现反汇编感到好奇 我想让它变得简单和紧凑 并且在这样做时我可以利用一些概念 可以从操作码确定 x86 指令编码的其余部分 也许也需要前缀字节 我知道很多人都写了表格来做到这一点 我对助记符不感兴趣 而是对
  • 为什么append修改传递的切片

    我如何迭代切片并将切片传递到除当前元素之外的某个位置 似乎append 正如我们在文档中看到的那样 函数修改了底层切片 但无论如何我仍然不知道如何达到这个目标 func main args string 2 3 8 for i range
  • Pandas - Groupby 并创建新的 DataFrame?

    这就是我的情况 In 1 data Out 1 Item Type 0 Orange Edible Fruit 1 Banana Edible Fruit 2 Tomato Edible Vegetable 3 Laptop Non Edi
  • HA gearman 作业服务器的最佳实践是什么

    在 gearman 的主页上 他们提到运行多个作业服务器 因此如果一个作业服务器挂掉 客户端可以选择一个新的作业服务器 根据下面的陈述和图表 作业服务器似乎不相互通信 我们的问题是那些在死亡的作业服务器中排队的作业会发生什么 为这些服务器提
  • 不使用“if”来执行此操作 | if(s == "值1"){...} else if(s == "值2") { ...}

    根据反如果运动 http www antiifcampaign com 最佳实践是不在我们的代码中使用 if 谁能告诉我是否可以去掉这段代码中的 if 开关也不是一个选项 重点是删除条件逻辑 而不是用类似的语言结构替换 if if s fo
  • 有没有办法在 go 中将整数转换为布尔值,反之亦然?

    是否有内置方法将布尔值转换为整数 反之亦然 我尝试过正常的转换 但由于它们使用不同的基础类型 因此不可能以经典的方式进行转换 我翻了一些规范 还没有找到答案 Int 到 bool 很容易 只需x 0会成功的 反之 由于 Go 不支持三元运算
  • 如何更改节点版本? “您请求的“节点”版本“8”与您的全局版本“10”不匹配

    当我在终端 firebase 模拟器中运行时会发生这种情况 start 低于所有输出 i emulators Starting emulators functions hosting hub emulator hub started at
  • 在 YARN 上运行 Spark 应用程序,无需 Spark-submit

    我知道 Spark 应用程序可以使用 YARN 在 YARN 上执行spark submit master yarn 问题是 是否可以使用yarn在yarn上运行Spark应用程序yarn命令 如果是这样 YARN REST API 可以用
  • Android Studio 启动失败 - ClassNotFoundException:com.intellij.ide.plugins.PluginManager

    在新的 Win8 1x64 机器上安装 Android Studio 后 每当我尝试启动它时 都会出现ClassNotFoundException com intellij ide plugins PluginManager并且 Studi
  • django ModelForm save() 方法问题

    我有一个模型表格 class SnippetForm ModelForm class Meta model Snippet exclude author slug 我希望能够使用以下方法编辑特定实例 def edit snippet req