Я использую фреймворк Turbogears-2.3 и теперь знаю, как загружать файлы в базу данных с помощью tgext.datahelpers. Я понимаю, что файл загружается на диск, а в базе данных метаданные сохраняются в формате JSON. Теперь я хочу запросить базу данных и хотел, чтобы ссылка генерировалась в столбце файлов, поэтому, если кто-то щелкнет по ней, файл можно будет загрузить. Однако, когда я попытался запросить базу данных и просмотреть таблицу, в столбце файла я получил текст, подобный объекту trai.model.model.F_AttachedFile по адресу 0xa7325bac (trai — это имя проекта). Когда я перебирал таблицу и печатал значение элемента в консоли javascript, печаталось то же самое. Может кто-нибудь, пожалуйста, скажите мне, как создать ссылку для загрузки из этого. Большое тебе спасибо
turbogears запрашивает файл в базе данных
Ответы (1)
Не уверен, что полностью понял ваш вопрос, небольшой фрагмент кода мог бы помочь понять контекст, но если я правильно догадался, вы пытаетесь получить URL-адрес загруженного файла tgext.datahelpers.
В таком случае см. https://bitbucket.org/axant/tgext.datahelpers#rst-header-attachments каждое вложение Column
предоставляет свойство url
, поэтому оттуда можно получить URL-адрес.
Существует также пример, который сохраняет модель Document
с полем file
и запрашивает ее обратно, печатая URL-адрес.
person
amol
schedule
09.11.2014
большое спасибо за эту подсказку. После небольших манипуляций я смог получить URL. На самом деле я переопределяю класс AttachedFile по умолчанию, но при написании нового класса F_AttachedFile я забыл добавить self.uuid в параметр self.url. Теперь я могу получить URL-адреса. И следующая задача — сделать их кликабельными в отображении сетки. Не могли бы вы подсказать по этому поводу. Спасибо
- person neeraj; 11.11.2014
если под отображением сетки вы подразумеваете TurboGears Admin // CrudRestController, вы можете взглянуть на turbogears.readthedocs.org/en/latest/turbogears/wikier/ показывает, как отобразить поле URL со ссылкой внутри.
- person amol; 11.11.2014
Большое тебе спасибо. Я проверю это решение. Однако я сделал это с помощью jquery.
- person neeraj; 11.11.2014