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

1K
Visualizações
Django: ¿Cómo hacer que la forma sea condicional?

Tengo un formulario con dos campos. El usuario debe estar obligado a seleccionar sólo uno de los dos. No ambos y no ninguno. Intenté resolver esto sobrescribiendo el método de limpieza como se describe en Django Doc:

formularios.py

 class ConfigureWorkout(forms.Form): first_exercise = forms.ModelChoiceField(empty_label="select", label="Choose First Exercise", queryset=FirstExercise.objects.all(), required=False) sec_exercise = forms.ModelChoiceField(empty_label="select", label="Choose Sec Exercise", queryset=SecExercise.objects.all(), required=False) def clean(self): first_exercise = self.cleaned_data.get("first_exercise") sec_exercise = self.cleaned_data.get("sec_exercise") if first_exercise and sec_exercise: raise forms.ValidationError("Enter either a First Exercise or a Secondary Exercise.") else: return self.cleaned_data

vistas.py

 def configure(request): configure_workout = ConfigureWorkout() if request.method == "GET": return render(request, "userprofile/some.html", configure_workout) else: return render(request, "app/other.html")

modelo

 <form action="{% url 'configure' %}" method="POST"> {% csrf_token %} {{ configure_workout }} <input type="submit" name="configuration_completed"> </form>

Sin embargo, si pruebo esto seleccionando ambos campos en el formulario, no se mostrará ni generará un error. Paso el formulario con éxito y me envían a "other.html".

¿Qué me estoy perdiendo? Muchas gracias de antemano por cualquier ayuda :)

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

0

Parece que no está pasando datos reales a su formulario. Tal vez esto ayude:

 def configure(request): configure_workout = ConfigureWorkout() if request.method == "GET": return render(request, "userprofile/some.html", configure_workout) else: configure_workout = ConfigureWorkout(request.POST) configure_workout.is_valid() configure_workout.clean() return render(request, "app/other.html")
over 4 years ago · Santiago Trujillo Relatório

0

Sobre la base de la respuesta de @trafalinos y mirando la documentación en Formularios , sugeriría hacer lo siguiente:

En forms.py :

 class ConfigureWorkout(forms.Form): first_exercise = forms.ModelChoiceField(empty_label="select", label="Choose First Exercise", queryset=FirstExercise.objects.all(), required=False) sec_exercise = forms.ModelChoiceField(empty_label="select", label="Choose Sec Exercise", queryset=SecExercise.objects.all(), required=False) def clean(self): cleaned_data = super().clean() # compare documentation first_exercise = cleaned_data.get("first_exercise") sec_exercise = cleaned_data.get("sec_exercise") if first_exercise and sec_exercise: raise forms.ValidationError("Enter either a First Exercise or a Secondary Exercise.") else: return self.cleaned_data

Y (créditos a trafalino) en views.py :

 def configure(request): if request.method == "GET": configure_workout = ConfigureWorkout() return render(request, "userprofile/some.html", configure_workout) else: configure_workout = ConfigureWorkout(request.POST) configure_workout.clean() return render(request, "app/other.html")
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