File¶El módulo django.core.files y sus submódulos contienen clases integradas para el manejo básico de archivos en Django.
File¶La clase File es un envoltorio delgado alrededor de un objeto Python file con algunas adiciones específicas de Django. Internamente, Django utiliza esta clase cuando necesita representar un archivo.
Archivo objetos tienen las siguientes características y métodos:
El nombre del archivo incluyendo el camino relativo desde MEDIA_ROOT.
El objeto de archivo subyacente que esta clase envuelve.
Ten cuidado con este atributo en las clases derivadas.
Algunas clases derivadas de Archivo, incluyendo ContentFile y FieldFile, pueden reemplazar este atributo con un objeto distinto de un objeto Python file. En estos casos, este atributo puede ser él mismo una clase derivada de Archivo (y no necesariamente la misma clase). Cada vez que sea posible, utilice las características y métodos de la propia clase derivada en lugar de los de su archivo atributo.
El modo de lectura/escritura del archivo.
Abrir o reabrir el archivo (lo que también hace Archivo.seek(0)). El argumento mode permite los mismos valores que Python’s built-in open(). *args y **kwargs se pasan después de mode a Python’s builtin open().
Cuando se reabre un archivo, mode sobreescribirá el modo con el que el archivo fue originalmente abierto; None significa reabrir con el modo original.
Puede usarse como administrador de contexto, por ejemplo: with file.open() as f:.
Itera sobre el archivo devolviendo «trozos» de un tamaño dado. chunk_size tiene como valor por defecto 64 KB.
Esto es especialmente útil con archivos muy grandes ya que permite streamearlos desde disco y evita almacenar todo el archivo en memoria.
Devuelve True si el archivo es lo suficientemente grande para requerir múltiples trozos para acceder a toda su contenido dada alguna chunk_size.
Además de los métodos listados, File expone las siguientes atributos y métodos del objeto file: encoding, fileno, flush, isatty, newlines, read, readinto, readline, readlines, seek, tell, truncate, write, writelines, readable(), writable(), y seekable().
ContentFile¶La clase ContentFile hereda de File, pero a diferencia de ella opera sobre contenido de cadena (también se admiten bytes), en lugar de un archivo real. Por ejemplo:
from django.core.files.base import ContentFile
f1 = ContentFile("esta frase está en español")
f2 = ContentFile(b"these are bytes")
ImageFile¶Django proporciona una clase específica para imágenes. django.core.files.images.ImageFile hereda todas las atributos y métodos de File, y además proporciona los siguientes:
Cualquier File que esté asociado con un objeto (como Car.photo, a continuación) también tendrá un par de métodos extra:
Guarda un nuevo archivo con el nombre y contenido proporcionados. Esto no reemplazará el archivo existente, sino que creará un nuevo archivo y actualizará el objeto para que apunte a él. Si save es True, se llamará al método save() del modelo una vez que el archivo esté guardado. Es decir, estas dos líneas:
>>> car.photo.save("myphoto.jpg", content, save=False)
>>> car.save()
son equivalentes a:
>>> car.photo.save("myphoto.jpg", content, save=True)
Nota que el argumento content debe ser una instancia de cualquiera de File o de una subclase de File, como ContentFile.
Elimina el archivo del objeto y elimina el archivo subyacente. Si save es True, se llamará al método save() del modelo una vez que el archivo esté eliminado.
may 31, 2026