获取最后插入的ID

0 投票
1 回答
2277 浏览
提问于 2025-04-21 01:50

问题是,当视图函数尝试 save() 对象时,如何获取文件的 ID 呢?

我正在使用 dropzonejs 来上传文件到服务器。每当用户 拖放 文件时,不等文件上传完成就会将文件发送到服务器,这个功能运行得很好,但

现在我想要获取文件的 id,以便进行后续处理,比如:

我想要的是:

如果用户选择了 两个或三个 文件,并勾选了复选框选项,然后点击下一步,我希望在渲染的页面上列出所有选中的文件,以便保存 标题编辑 等等……甚至还要保存外键。

我尝试过:

new_file = Tracks(file = request.FILES['file'])
new_file.save()
pprint.pprint(new_file.id)

控制台日志的输出是

[11/Sep/2014 08:56:34] "GET /app/track-info HTTP/1.1" 200 10112
9L
[11/Sep/2014 08:56:42] "POST /app/upload-tracks HTTP/1.1" 302 0
[11/Sep/2014 08:56:42] "GET /app/upload-tracks HTTP/1.1" 200 9580
10L
[11/Sep/2014 08:57:20] "POST /app/upload-tracks HTTP/1.1" 302 0

所以从上面的结论来看,每次文件上传时都会打印出一个 *id*

#upload.html
<div class="tb-column col-5"><p class="name" data-dz-name></p></div>
<div class="tb-column col-2"><p class="size" data-dz-size></p></div>
<div class="select"><input type="checkbox" class="checkBox" value="???" id="check"></div>

所以根据我想要实现的目标,我只需要复选框的值……

如何根据控制台日志的输出(比如 9L,10L 等等)来识别特定的 HTML 元素呢?

我该如何写 value="???",使其自动获取文件的 ID 呢?

我昨天问了一个不同的 问题,与这个问题有些相关,但我在将文件存储到数据库时遇到了困难,所以我放弃了那个想法。

1 个回答

0

我猜你是想把文件保存到数据库里吧?

那么这里有个方法可以帮助你在网页上获取最后插入的 id

首先,你需要写两个视图(请求)。

  1. 第一个视图是用来渲染页面模板和上下文的。
  2. 第二个视图是处理文件的,并获取 id

像这样:

def view_second(request)
        if request.method == 'POST':
            if form valid:
                #get file here
                new.save()
                msg = new.id
            return HttpResponse(msg)

就这样,现在在你的 HTML 代码中,放置 dropzone 脚本之后……

Dropzone.options.myDropzone = {
  init: function() {
    this.on("success", function(file, response) {
      #alert(response)  
    });

这样在响应中你就能得到 id 了。

撰写回答