Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

195
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!