6

フォームでタグを送信する機能があります。フォームが送信されると、次のように表示されます。

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

タグの値は、ユーザーが選択したものの ID です。request.POSTオブジェクトから値を取得でき、すべて問題ありません。問題は、ユーザーが少なくとも 1 つのタグを選択する必要があることです。そして、Django フォームで検証を行いたいのですが、Django フォームでどのようなフォーム フィールド値を指定すればよいかわかりません。通常は 、 などを使用CharFieldDateFieldますが、配列の値を取得するために何が存在するのでしょうか? そして、そのためのclean関数を提供できます。ありがとう!

4

1 に答える 1

4

試してみてくださいdjango.forms.MultipleChoiceField()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)

編集1:

あなたがしたいのがテキストフィールドを配列に変えることであるなら...

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()
于 2012-07-29T00:05:09.540 に答える