A veces es útil prepopular la base de datos con datos codificados a mano cuando estás configurando una aplicación por primera vez. Puedes proporcionar datos iniciales mediante migraciones o fijadores.
Para cargar automáticamente los datos iniciales de una aplicación, crea un migración de datos. Las migraciones se ejecutan cuando se configura la base de datos de prueba, por lo que los datos estarán disponibles allí, sujetos a algunas limitaciones: ref:limitaciones del caso de prueba serializado <test-case-serialized-rollback>.
También puedes proporcionar datos utilizando fijadores, sin embargo, estos datos no se cargan automáticamente, excepto si utilizas la propiedad TransactionTestCase.fixtures.
Un fijador es una colección de datos que Django sabe cómo importar a una base de datos. La forma más directa de crear un fijador si ya tienes algunos datos es utilizar el comando manage.py dumpdata. O, puedes escribir fijadores a mano; los fijadores se pueden escribir como documentos JSON, XML o YAML (con PyYAML instalado). La documentación de serialización tiene más detalles sobre cada uno de estos formatos de serialización soportados: ref:formatos de serialización <serialization-formats>.
Por ejemplo, aquí está un fijador para el modelo Person en JSON:
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}
]
Y aquí está ese mismo fijador como YAML:
- model: myapp.person
pk: 1
fields:
first_name: John
last_name: Lennon
- model: myapp.person
pk: 2
fields:
first_name: Paul
last_name: McCartney
You’ll store this data in a fixtures directory inside your app.
Puedes cargar datos llamando a manage.py loaddata <fixturename>, donde <fixturename> es el nombre del archivo de fixture que has creado. Cada vez que ejecutes loaddata, los datos se leerán desde el archivo de fixture y se volverán a cargar en la base de datos. Ten en cuenta que esto significa que si cambias una de las filas creadas por un archivo de fixture y luego vuelves a ejecutar loaddata, eliminarás cualquier cambio que hayas hecho.
Por defecto, Django busca archivos de fixtures en el directorio fixtures dentro de cada aplicación, por lo que la orden loaddata sample encontrará el archivo my_app/fixtures/sample.json. Esto funciona con rutas relativas también, así que loaddata my_app/sample encontrará el archivo my_app/fixtures/my_app/sample.json.
Django también busca archivos de fixtures en la lista de directorios proporcionados en la FIXTURE_DIRS configuración.
Para evitar completamente la búsqueda por defecto, utiliza una ruta absoluta para especificar la ubicación del archivo de fixture, p. ej. loaddata /path/to/sample.
Nombra tus archivos de fixture con un espacio de nombres
Django utilizará el primer archivo de fixture que encuentre cuyo nombre coincida, por lo que si tienes archivos de fixture con el mismo nombre en diferentes aplicaciones, no podrás distinguir entre ellos en tus órdenes loaddata. La forma más fácil de evitar este problema es nombra tus archivos de fixture. Es decir, colócalos dentro de un directorio llamado por su aplicación, como en el ejemplo de ruta relativa anterior.
Ver también
Los archivos de fixtures también se utilizan por el marco de pruebas para ayudar a configurar un entorno de prueba consistente.
may 31, 2026