输出上传字段中存储在表中的文件名?

时间:2013-12-20 20:57:03

标签: python web2py

模特:

db.define_table('files',
                Field('course_id', 'reference course'),
                Field('documentx_filename',unique=True),
                Field('documentx','upload'))

控制器:

def show_doc():
    rows = db( (db.course.id == db.files.course_id) & (db.dept.id==db.course.dept_id) ).select()
    return dict(rows=rows)

def create_doc():
    form = SQLFORM(db.files).process(next=URL('show_doc'))
    if request.vars.documentx != None:
        form.vars.documentx_filename = request.vars.documentx.filename
    if form.process().accepted:
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = 'form has errors'
    else :
        response.flash = 'something still went wrong'
    return dict(form = form)

查看show_doc的文件:

<div><a href={{=URL('default', 'download', args=row.files.documentx)}}> file = {{=row.files.documentx_filename}}</a></div>
<br />
{{pass}}

现在,如果我将文件名放在“documentx_filename”字段中,则会显示文件名。

但是,如果我没有将该名称放在“documentx_filename”字段中并将其留空但是上传文件。 它应该复制上传文件的名称,如在控制器create_doc中我放了if语句,但它确实这样做了吗?

1 个答案:

答案 0 :(得分:2)

您可以将原始文件名存储在模型中(http://www.web2py.com/book/default/chapter/07#Storing-the-original-filename

但是,假设您拥有与此帖相同的模型:How can I join 3 tables and output all three together joined in web2py? 我会在模型定义中添加一个“标题”字段:

db.define_table('files',
                Field('title', unique=True, requires=IS_NOT_EMPTY()),
                Field('course_id', 'reference course'),
                Field('documentx','upload'))

然后,在您的视图中,您可以写:

{{for row in rows:}}
    <div><a href={{=URL('default', 'download', args=row.files.documentx)}}>row.files.title</a></div>
{{pass}}