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

188
Views
¿Cómo deshabilitar las casillas de verificación en MultipleChoiceField?

Yo uso MultipleChoiceField en forma. Me muestra la lista REQUIREMENTS_CHOICES con casillas de verificación donde el usuario puede seleccionar y agregar nuevos requisitos a la base de datos. ¿Es posible deshabilitar las casillas de verificación (en mi caso, requisitos) que ya están en la base de datos? Digamos que tengo A y C en la base de datos, así que no los necesito.

El primer valor en tulpe es el símbolo del requisito, el segundo valor es el nombre del requisito.

modelos.py:

 class Requirement(models.Model): code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False) symbol = models.CharField(_('Symbol'), max_length=250) name = models.CharField(_('Name'), max_length=250)

formularios.py:

 REQUIREMENTS_CHOICES = ( ('A', 'Name A'), ('B', 'Name B'), ('C', 'Name C'), ('D', 'Name D'), ) class RequirementAddForm(forms.ModelForm): symbol = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=REQUIREMENTS_CHOICES,) class Meta: model = Requirement fields = ('symbol',)

vistas.py:

 def requirement_add(request): data = dict() if request.method == 'POST': form = RequirementAddForm(request.POST) if form.is_valid(): list = dict(REQUIREMENTS_CHOICES) # {'C': 'Name C', 'A': 'Name A', 'B': 'Name B'} symbols = form.cleaned_data.get('symbol') # ['A', 'B', 'C'] requirement = form.save(commit=False) for symbol in symbols: requirement.symbol = symbol requirement.name = list[symbol] requirement.save() data['form_is_valid'] = True requirements = Requirement.objects.filter() context = {requirement': requirement, 'requirements': requirements} data['html_requirement'] = render_to_string('project/requirement_list.html', context) else: data['form_is_valid'] = False else: form = RequirementAddForm() context = {'form': form} data['html_requirement_form'] = render_to_string('project/requirement_add.html', context, request=request) return JsonResponse(data)
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede manipular su formulario en su inicialización:

 REQUIREMENTS_CHOICES = ( ('A', 'Name A'), ('B', 'Name B'), ('C', 'Name C'), ('D', 'Name D'), ) class RequirementAddForm(forms.ModelForm): def __init__(self, symbols='', *args, **kwargs): super(RequirementAddForm, self).__init__(*args, **kwargs) UPDATED_CHOICES = () # empty tuple for choice in REQUIREMENTS_CHOICES: if choice[1] not in symbols: UPDATED_CHOICES += (choice,) # adds choice as a tuple self.fields['symbol'] = forms.MultipleChoiceField( required=False, widget=forms.CheckboxSelectMultiple, choices=UPDATED_CHOICES, ) class Meta: model = Requirement

Lo que sucede arriba:

  1. Cuando inicializas tu formulario
    (por ejemplo: form=RequirementAddForm(symbols=existing_symbols) ), puede pasar al constructor una cadena con los símbolos existentes para un elemento en su base de datos.
  2. La función __init__ verifica qué opciones ya existen en los symbols y actualiza UPDATED_CHOICES consecuencia.
  3. Un campo llamado symbol se agrega al formulario desde el constructor, que tiene como opciones UPDATED_CHOICES .
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!