Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django array value in a form

I have the ability submit tags in a form. When the form is submitted, I see:

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

The tag values are ID's for what the user has chosen. I am able to get the values from the request.POST object and everything is fine. Problem is that the user has to select ATLEAST one tag. And I want to do the validation in a Django form, but I'm not sure what kind of form field value to supply in the django form? Normally I use CharField, DateField, etc. But what exists to get the array value? And then I can supply a clean function for it. Thanks!

like image 540
KVISH Avatar asked Jul 28 '12 23:07

KVISH


1 Answers

Try django.forms.MultipleChoiceField(). See 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:

If what you want to do is to turn a text field into an array...

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()
like image 139
Rob Cowie Avatar answered Oct 15 '22 11:10

Rob Cowie