2013-12-20 2 views
2

модель:выводит имя файла, хранящегося в таблице в загруженной папке?

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, но он действительно делает это?

ответ

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}} 
+0

я редактировал вопрос и положить некоторую информацию. Теперь я могу показать имя файла, если мы заполним это поле, но он должен скопировать имя файла из файла, если поле осталось пустым, вы можете взглянуть. – shunya

Смежные вопросы