View All Posts. MiCHiLU.com powered by Django ;-)

[Django]: newforms Modelに紐付かないformデータをバリデートする

models.Fieldの設定がなくModelに格納できないようなforms.Fieldもひとまとめにバリデートする。

models.Modelに列挙されていないFieldが含まれているとsaveできない。 Form.clean_<field>の返り値は再び代入されてNoneが入るので、このメソッドでは削除できない。 Form.cleanでpopする。

(Django 0.96)

# -*- coding: utf-8 -*-
from django import newforms as forms
from django.newforms.util import ValidationError
from django.utils.translation import gettext
from models import Tag

class BaconForm(forms.Form):
    content = forms.CharField(
        widget = forms.Textarea,
        max_length = 1000,
    )
    tags = forms.ModelMultipleChoiceField(
        queryset = Tag.objects.all(),
    )

    check = forms.BooleanField(
        required = False,
    )

    def clean_check(self):
        if self.clean_data["check"] is not True:
            raise ValidationError(gettext(u"チェックしてね。はぁと"))

    def clean(self):
        self.clean_data.pop("check")
        return super(BaconForm, self).clean()
Thu, 13 Sep 2007 10:52:34 +0900 source edit
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.
View All Posts. MiCHiLU.com powered by Django ;-)