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

184
Vistas
Cómo representar opciones en un campo de Django en función de una condición

Tengo un modelo de usuario personalizado:

 from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): is_worker = models.BooleanField(default=False) is_customer = models.BooleanField(default=True) def __str__(self): return f'{self.username} - {self.is_worker}'

Y tengo este modelo de servicios:

 from django.db import models from users.models import CustomUser SERVICE_CHOICES = ( ('Carpenter', 'Carpenter'), ('Driver', 'Driver'), ('Ambulanve', 'Ambulanve'), ('Spa', 'Spa'), ('Barber', 'Barber'), ('Cleaning', 'Cleaning'), ('Cook', 'Cook'), ) class Service(models.Model): name = models.ForeignKey(CustomUser, on_delete=models.CASCADE) service = models.CharField(choices=SERVICE_CHOICES,max_length=100) def __str__(self): return f'{self.service} - {self.name}'

En el modelo de servicios, estoy usando el modelo CustomUser para el nombre. Mientras que solo necesito esos nombres donde is_worker = True . En mi código, obtengo todos los usuarios independientemente del estado. ¿Cómo puedo cambiarlo?

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

0

Puede usar ForeignKey.limit_choices_to para establecer un límite de opciones disponibles para un campo de clave externa. En tu caso :

 class Service(models.Model): name = models.ForeignKey(CustomUser, on_delete=models.CASCADE, limit_choices_to={'is_worker': True},) service = models.CharField(choices=SERVICE_CHOICES,max_length=100) def __str__(self): return f'{self.service} - {self.name}'

documento Django

over 4 years ago · Santiago Trujillo Denunciar

0

algo como eso:

 class ServiceForm(ModelForm): def __init__( self, *args, **kwargs ): super().__init__(*args, **kwargs) if self.instance and self.instance.is_worker: self.fields['service'].widget = forms.Select( choices=[(k, v) for i in SERVICE_CHOICES if v in ('Barber', 'Spa')] )
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