获取最后插入的ID
问题是,当视图函数尝试 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
。
首先,你需要写两个视图(请求)。
- 第一个视图是用来渲染页面模板和上下文的。
- 第二个视图是处理文件的,并获取
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
了。