6

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!

1 Answer 1

4

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()
Sign up to request clarification or add additional context in comments.

5 Comments

No, this would not work. I do not have a set of "Known tags". I have a table in the database, so the tags could be anything on that table.
The choices tuple is just an example. You can pull the data from your db and build the list. Or, are you saying you allow users to enter text (rather than select from a list)?
Yeah, users are able to enter text... Because these values are from tags.
Sorry @kalvish, I don't know what you mean. An example would help

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.