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

288
Vistas
Indexación de campos modelo de Django

Solo sé que la indexación es útil y consulta más rápido.

¿Cuál es la diferencia entre los dos siguientes?

1.

 class Meta: indexes = [ models.Index(fields=['last_name', 'first_name',]), models.Index(fields=['-date_of_birth',]), ]

2.

 class Meta: indexes = [ models.Index(fields=['first_name',]), models.Index(fields=['last_name',]), models.Index(fields=['-date_of_birth',]), ]
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Django Model Index se introdujo en Django 1.11

qué es Model.indexes:

De forma predeterminada, los índices se crean con un orden ascendente para cada columna. Para definir un índice con un orden descendente para una columna, agregue un guión antes del nombre del campo.

Para su consulta, models.Index(fields=['last_name', 'first_name','-date_of_birth',]), crearía SQL con (last_name, first_name, date_of_birth DESC).

Pasemos a tu pregunta,

usted preguntó diferencia entre 2 consultas,

ambos tomarán models.Index(fields=['-date_of_birth',]),

porque al menos uno anulará las variables asignadas. de su pregunta, lo mínimo es la fecha de dateofbirth , por lo que anulará las dos líneas anteriores.

entonces, según la documentación, el método preferible es, porque el campo de indexación debe estar en una sola lista ... entonces django preparará la indexación de SQL a partir de la lista de campos ...

 models.Index(fields=['last_name', 'first_name', '-date_of_birth']),
over 4 years ago · Santiago Trujillo Denunciar

0

Ejemplo 1:

El primer ejemplo crea un índice único en el campo last_name y first_name .

 indexes = [ models.Index(fields=['last_name', 'first_name',]), ]

Será útil si busca el apellido y el nombre juntos, o el apellido solo (porque last_name es el primer campo en el índice).

 MyModel.objects.filter(last_name=last_name, first_name=first_name) MyModel.objects.filter(last_name=last_name)

Sin embargo, no será útil para buscar first_name por sí mismo (porque first_name no es el primer campo en el índice).

 MyModel.objects.filter(first_name=first_name) # not useful

Ejemplo 2:

El segundo ejemplo crea un índice para el campo first_name y un índice separado para el campo last_name .

 indexes = [ models.Index(fields=['first_name',]), models.Index(fields=['last_name',]), ]

Será útil si realiza búsquedas basadas en el nombre o apellido en su código

 MyModel.objects.filter(first_name=search) MyModel.objects.filter(last_name=search)
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