2012-07-28 23 views
6

Tengo la capacidad de enviar etiquetas en un formulario. Cuando se envía el formulario, veo:Django valor de matriz en un formulario

tags=['3','4','5']

Los valores de las variables son de identificación para lo que el usuario ha elegido. Puedo obtener los valores del objeto request.POST y todo está bien. El problema es que el usuario tiene que seleccionar ATLEAST una etiqueta. Y quiero hacer la validación en un formulario de Django, pero no estoy seguro de qué tipo de valor de campo de formulario se debe proporcionar en el formulario django. Normalmente uso CharField, DateField, etc. Pero, ¿qué existe para obtener el valor de la matriz? Y luego puedo suministrarle una función clean. ¡Gracias!

Respuesta

4

Probar django.forms.MultipleChoiceField(). Ver https://docs.djangoproject.com/en/dev/ref/forms/fields/#multiplechoicefield

known_tags = (
    (1, 'Choice 1'), (2, 'Choice 2'), (3, 'Choice 3'), 
    (4, 'Choice 4'), (5, 'Choice 5')) 

class MyForm(django.forms.Form): 
    tags = django.forms.MultipleChoiceField(choices=known_tags, required=True) 

EDIT 1:

Si lo que quieres hacer es convertir un campo de texto en una matriz ...

class MyForm(django.forms.Form): 
    tags = django.forms.CharField(required=True) 

    def clean_tags(self): 
     """Split the tags string on whitespace and return a list""" 
     return self.cleaned_data['tags'].strip().split() 
+1

No, esto no funcionaría. No tengo un conjunto de "Etiquetas conocidas". Tengo una tabla en la base de datos, por lo que las etiquetas podrían ser cualquier cosa en esa tabla. – KVISH

+1

Las opciones de tupla son solo un ejemplo. Puede extraer los datos de su base de datos y crear la lista. ¿O está diciendo que permite que los usuarios ingresen texto (en lugar de seleccionar de una lista)? –

+0

Sí, los usuarios pueden ingresar texto ... porque estos valores son de etiquetas. – KVISH

Cuestiones relacionadas