es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasando valores predeterminados a un formulario desvinculado de Django.

Tengo dos clases de selección que estoy tratando de crear en un formulario desvinculado. Las selecciones de datos solo son relevantes para la presentación que se crea en la vista, por lo que son desechables y no es necesario guardarlas en un modelo.

El desafío que tengo es cómo establecer valores “predeterminados” marcados/seleccionados para que el formulario se vuelva “vinculado”.

views.py

def cards(request):

sort_name = []
sort_name.append(“Orden Alfabético”)
sort_name.append(“Más Popular”)
sort_name.append(“Menos Popular”)
sort_name.append(“Mayor Tasa de Victorias”)
sort_name.append(“Menor Tasa de Victorias”)

sort_id = range(len(sort_name))
sort_list = list(zip(sort_id, sort_name))

<más código=”” para=”” crear=”” filt_list=”” y=”” combinarlo=””>

if request.method == ‘POST’:
form = cardStatsForm(request.POST, sortList=sort_list, filtList=filt_list)
if form.is_valid():
hacer algo
else:
hacer algo más
else:
form = cardStatsForm(filter_list, sort_list)


forms.py

class cardStatsForm(forms.Form):
def init(self, filterList, sortList, *args, **kwargs):
super(cardStatsForm, self).__init__(*args, **kwargs)
self.fields[‘filts’].choices = filterList
self.fields[‘filts’].label = “Selecciona las clasificaciones de jugador para incluir en las estadísticas:”
self.fields[‘sorts’].choices = sortList
self.fields[‘sorts’].label = “Elige un orden de clasificación:”

filts = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=(), required=True)
sorts = forms.ChoiceField(choices=(), required=True)
“`

La dificultad que tengo es que el formulario no pasa la prueba de “is_valid” porque no está vinculado, y tengo la configuración de “required=true” (para que el usuario deba seleccionar una casilla de verificación / seleccionar un valor), pero no puedo hacer cumplir la lógica ya que parece que el formulario nunca está “vinculado”.</más>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para establecer valores predeterminados para los campos del formulario, puedes pasar valores iniciales al constructor del formulario al crearlo. Por ejemplo, si quieres establecer “Orden alfabético” como valor predeterminado para el campo “sorts”, puedes hacer lo siguiente:

    form = cardStatsForm(filter_list, sort_list, initial={'sorts': '0'})
    

    Esto establecerá el campo “sorts” con un valor predeterminado de 0, que corresponde a “Orden alfabético” en la lista de opciones.

    Para manejar el error de validación que ocurre cuando el formulario no está vinculado, puedes verificar si el formulario está vinculado antes de comprobar si es válido. Si el formulario no está vinculado, puedes omitir la comprobación de validación. Aquí tienes un ejemplo:

    if request.method == 'POST':
        form = cardStatsForm(request.POST, sortList=sort_list, filtList=filt_list)
        if form.is_bound and form.is_valid():
            # hacer algo si el formulario está vinculado y es válido
        else:
            # hacer algo más si el formulario no está vinculado o no es válido
    else:
        form = cardStatsForm(filter_list, sort_list)
    

    Al verificar si el formulario está vinculado antes de comprobar si es válido, puedes evitar el error de validación que ocurre cuando el formulario no está vinculado.

Comments are closed.