Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datos iniciales #49

Open
benjavicente opened this issue Aug 1, 2021 · 3 comments
Open

Datos iniciales #49

benjavicente opened this issue Aug 1, 2021 · 3 comments
Labels

Comments

@benjavicente
Copy link
Member

Añadir datos iniciales (fixtures en Djando) permitiría probar la aplicación sin tener que clonar la base de datos, lo que posibilitará:

No necesita tener muchos datos, pero al menos lo mínimo necesario para probar toda la aplicación.


A fixture is a collection of data that Django knows how to import into a database. The most straightforward way of creating a fixture if you’ve already got some data is to use the manage.py dumpdata command. Or, you can write fixtures by hand; fixtures can be written as JSON, XML or YAML (with PyYAML installed) documents.

Django looks in the fixtures directory inside each app for fixtures.

@benjavicente
Copy link
Member Author

Ahora los testcases tienen como "hardcodeados" la creación de los objetos lo que permitiría lo segundo, pero no lo primero. Pasarlos a un archivo aparte (idealmente YAML porque es más simple) solucionará ambos.

@nico-mac
Copy link
Member

Puedo hacer un fixture de todos los datos pero quedaría como un archivo comprimido de 27 MB aprox (manage.py dumpdata fixture.json.gz), no se si es ideal. Sin comprimir son 430 MB.

@benjavicente
Copy link
Member Author

Estaría bueno tener ese archivo guardado en una parte como para partir con una copia de la BDD, pero no para testear la app.
Parece que se puede hacer esto para tener un set de datos más chico (robado de aquí)

import itertools 
from django.core import serializers
from django.contrib.admin.utils import NestedObjects

from apps.courses.models import Course

# nombre de la bdd
collector = NestedObjects(using="default")
# recolectar consulta de pocas instancias de un modelo 
collector.collect(Course.objects.all()[:10])

# se obtienene los elementos relacionados
objects = list(itertools.chain.from_iterable(collector.data.values()))  

with open("courses.json", "w") as file:  # o yaml
    file.write(serializers.serialize("json", objects))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants