Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

189
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda