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

218
Vistas
Campo de pedido personalizado con Django Rest Framework

tengo un modelo como

 class MyModel(models.Model): COLOR_CODES = ['RED', 'YELLOW', 'GREEN'] name = models.CharField(db_column='name', max_length=200, blank=False, null=False, unique=True) colorCode = EnumField(db_column='color_code', choices=COLOR_CODES, null=False, default='GREEN') class Meta: managed = True db_table = 'MyModel' ordering = ['colorCode']

Me gustaría ordenar el juego de preguntas por colorCode, pero no como elementos VERDES, ROJOS, AMARILLOS. Quiero hacer el pedido como artículos ROJOS, AMARILLOS, VERDES.

¿Es posible? ¿Hay algo como Java Comparator? Gracias por adelantado.

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

0

Podría usar la función sorted de Python, pero para aprovechar las consultas de Django:

 from django.db.models import Value, IntegerField, When, Case # Don' t set the default order in the model (this also improves performance), simply write this query when you need this particular order MyModel.objects.annotate(order=Case(When(colorCode='RED', then=0), When(colorCode='YELLOW', then=1), default=Value(2), output_field=IntegerField())).order_by('order')

De lo contrario, podría cambiar su modelo:

 from enum import Enum class MyModel(models.Model): class ColorCodes(Enum): # In the admin interface you will see 'red' and not '0r' (so don't worry about ugly names), the second value is stored in the database and is used for order the queryset red = ('red', '0r') yellow = ('yellow', '1y') green = ('green', '2g') @classmethod def get_value(cls, member): return cls[member].value[0] colorCode = CharField(db_column='color_code', null=False, default=ColorCodes.get_value('green'), max_length=2, choices=[x.value for x in ColorCodes]) class Meta: managed = True db_table = 'MyModel' ordering = ['colorCode']
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