Tengo un modelo File
, que almacena path
campo - ruta en el sistema de archivos del archivo. Todos los archivos se almacenan en MEDIA_ROOT/filesDjango: generar enlace de descarga
En la plantilla quiero generar el enlace de descarga para el objeto File
. ¿Cuál es la mejor manera de hacer esto? ¿Debo usar el manejo de archivos estáticos en django?
TIA!
UPD
File
modelo
class File(models.Model):
item = models.ForeignKey(Item)
file = models.FileField(upload_to = os.path.join(MEDIA_ROOT,'items'))
format = models.CharField(max_length = 255)
En opinión del artículo que haga lo siguiente:
files = File.objects.filter(item_id = id)
y el pase a la plantilla files
en la plantilla que utilice files.1.file.url
por ejemplo, y todavía tienen mala URL como site.com/home/dizpers/...
UPD2
Solución
Mi problema era en el modelo de archivos, en file
campo. En el parámetro upload_to utilizo ruta absoluta, sino que debe utilizar la ruta relativa:
file = models.FileField(upload_to = 'items')
Y funcionará para mi objeto de archivo personalizado? No es el objeto de archivo de django. – dizpers
Lo probé. No funciona aún obtener URL como site.com/home/dizpers/data/......./file.pdf donde 'home/dizpers/...' es la ruta al archivo en el disco – dizpers
Estaba asumiendo que su ' El modelo de archivo todavía utilizaba un 'FileField' verdadero azul en lugar de un' CharField' estándar.Realmente no hay razón para no hacerlo, ya que ambos se almacenan de la misma manera en la base de datos; 'FileField' solo tiene una API adjunta para tratar con E/S. Sin embargo, si solo necesitas un enlace muy básico, puedes usar '{{MEDIA_URL}} archivos/{{file_instance.path}}'. –