2012-07-28 14 views
6

Mam możliwość przesyłania znaczników w formularzu. Po wysłaniu formularza, widzę:Wartość tablicy Django w postaci

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

Wartości ID tag są dla co użytkownik wybrał. Jestem w stanie uzyskać wartości z obiektu request.POST i wszystko jest w porządku. Problem polega na tym, że użytkownik musi wybrać jeden tag ATLEAST. I chcę wykonać sprawdzanie poprawności w formularzu Django, ale nie jestem pewien, jaki rodzaj wartości pola formularza należy podać w formularzu django? Zwykle używam CharField, DateField itp. Ale co istnieje, aby uzyskać wartość tablicy? A potem mogę dostarczyć do niego funkcję clean. Dzięki!

Odpowiedz

4

Wypróbuj django.forms.MultipleChoiceField(). Zobacz 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:

Jeśli to, co chcesz zrobić, to włączyć pola tekstowego do tablicy ...

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

Nie, to nie będzie działać. Nie mam zestawu "Znanych tagów". Mam tabelę w bazie danych, więc znaczniki mogą być dowolne na tej tabeli. – KVISH

+1

Krotka wyborów jest tylko przykładem. Możesz pobrać dane z bazy danych i utworzyć listę. Czy możesz powiedzieć, że pozwalasz użytkownikom wprowadzać tekst (zamiast wybierać z listy)? –

+0

Tak, użytkownicy mogą wprowadzać tekst ... Ponieważ te wartości pochodzą z tagów. – KVISH

Powiązane problemy