Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

280
Vistas
¿Es posible almacenar una matriz en el modelo Django?

Me preguntaba si es posible almacenar una matriz en un modelo Django.

Estoy preguntando esto porque necesito almacenar una matriz de int (por ejemplo, [1,2,3]) en un campo y luego poder buscar una matriz específica y obtener una coincidencia con ella o por sus posibles combinaciones.

Estaba pensando en almacenar esas matrices como cadenas en CharField s y luego, cuando necesito buscar algo, concatenar los valores (obtenidos al filtrar otro modelo) con '[', ']' y ',' y luego usar un filtro de objetos con esa cadena generada. El problema es que tendré que generar cada combinación posible y luego filtrarlas una por una hasta que me salga una coincidencia, y creo que esto puede ser ineficiente.

Entonces, espero que me puedan dar otras ideas que podría probar.

No estoy pidiendo código, necesariamente, cualquier idea sobre cómo lograr esto será buena.

over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

Sí, puedes usarlo así:

 from django.contrib.postgres.fields import ArrayField class Board(models.Model): pieces = ArrayField(ArrayField(models.IntegerField()))

Sin embargo, solo puede estar disponible cuando se usa PostgreSQL para la base de datos.

over 4 years ago · Santiago Trujillo Denunciar

0

Te daría dos consejos:

1) Use ArrayField si está usando PostgreSQL como su base de datos. Puede leer más sobre ArrayField aquí .

2) Codifique su matriz como JSON y guárdela como una cadena simple o usando un JSONField como se encuentra aquí .

Personalmente, preferiría la opción número 1, ya que es la forma más limpia y agradable, pero dependiendo de lo que realmente esté usando para almacenar sus datos, es posible que no esté disponible para usted.

over 4 years ago · Santiago Trujillo Denunciar

0

Si no está utilizando Postgres, le recomiendo el validate_comma_separated_integer_list de lista de números enteros separados por comas de Django.

https://docs.djangoproject.com/en/dev/ref/validators/#django.core.validators.validate_comma_separated_integer_list

Lo usas como validador en un CharField() .

over 4 years ago · Santiago Trujillo Denunciar

0

No sé por qué nadie lo ha sugerido, pero siempre puedes encurtir las cosas y poner el resultado en un campo binario.

Las ventajas de este método son que funcionará con casi cualquier base de datos, es eficiente y se puede aplicar a más que solo arreglos. La desventaja es que no puede hacer que la base de datos ejecute consultas en los datos encurtidos (no fácilmente, de todos modos).

over 4 years ago · Santiago Trujillo Denunciar

0

puede almacenar un json y listo con subconjuntos de ese JSON:

 if (data != "attachmentto") { formData.append(data, this.recipe[data]) console.log('rec data ', data)} else if (data == "attachmentto") { console.log('rec data434 ', this.recipe.attachmentto) var myObj = { name: this.recipe.attachmentto.name, age: 31, city: "New York" }; let kokos = JSON.stringify(myObj); // this.recipe.attachmentto.name = this.recipe.attachmentto.name formData.append('attachmentto', kokos) }

back-end de Django:

 class Video(models.Model): objects = models.Manager() title = models.CharField(max_length=80) description = models.TextField(max_length=300) picture = JSONField(encoder=None) price = models.IntegerField(default=0) url = models.URLField() category = models.CharField(max_length=50) subcategory = models.TextField(max_length=50) attachmentto = JSONField(encoder=None) # attachmentto2 = models.JSONField() user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)

y resultado en la API de back-end:

 { "id": 174, "title": "ads", "description": "ads", "picture": { "name": "https://v3.vuejs.org/logo.png" }, "price": 0, "user": 1, "rating_average": 0, "attachmentto": { "age": 31, "city": "New York", "name": [ "https://restdj.herokuapp.com/media/uploads/ftf_3_cJ0V7TF.png", "https://restdj.herokuapp.com/media/uploads/ftf_3.jpg" ] } },

Yo lo llamo muy bien (muy bien). Observe que enviamos un JSON y tenemos una matriz en ese JSON

Kokos es el JSON completo desaprobado para djangoo:

 var myObj = { name: this.recipe.attachmentto.name, age: 31, city: "New York" }; let kokos = JSON.stringify(myObj);

formData.append('adjunto a', kokos)

Encima; nombre: this.recipe.attachmentto.name es una matriz

Aquí está la matriz: "nombre": [

 "https://restdj.herokuapp.com/media/uploads/ftf_3_cJ0V7TF.png", "https://restdj.herokuapp.com/media/uploads/ftf_3.jpg" ]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda