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

207
Visualizações
Django: ¿cómo obligar al usuario a seleccionar una cierta cantidad de opciones en un modelo de casilla de verificación?

Estoy haciendo una encuesta simple construida alrededor de un modelo:

modelos.py

 class Fruits(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) title = models.CharField(max_length=200, default='') text = models.TextField(default='') banana = models.BooleanField(default=False) grape = models.BooleanField(default=False) apple = models.BooleanField(default=False) mango = models.BooleanField(default=False)

formularios.py

 class FruitPicker(ModelForm): class Meta: model = Fruits fields = [ 'title', 'text', 'banana', 'grape', 'apple', 'mango' ] widgets = { 'text': forms.Textarea(attrs={"style": "height:10em;" "width:60em;"}), 'banana': forms.CheckboxInput(attrs={"style": "margin-left:350px;"}), 'grape': forms.CheckboxInput(attrs={"style": "margin-left:350px;"}), 'apple': forms.CheckboxInput(attrs={"style": "margin-left:350px;"}), 'mango': forms.CheckboxInput(attrs={"style": "margin-left:350px;"}) }

Ahora digamos que quiero asegurarme de que el usuario tiene que seleccionar una cantidad mínima de 2 frutas, pero una cantidad máxima de 3. ¿Cómo haría esto en el back-end?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede anular el método de clean del formulario para verificar si se verifican entre dos y tres BooleanField s:

 from django.core.exceptions import ValidationError class FruitPicker(ModelForm): # ⋮ def clean (self, *args, **kwargs): data = super().clean(*args, **kwargs) total = sum([data[x] for x in ['banana', 'grape', 'apple', 'mango']]) if not (2 <= total <= 3): raise ValidationError('You should select between 2 and 3 fruits.') return data

Aquí sum(…) suma los bool booleanos y usa 0 para False y 1 para True , por lo que cuenta el número de True . Si ese número no está entre 2 y 3 , genera un ValidationError .

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