[Django]: newforms Modelに紐付かないformデータをバリデートする ============================================================== models.Fieldの設定がなくModelに格納できないようなforms.Fieldもひとまとめにバリデートする。 models.Modelに列挙されていないFieldが含まれているとsaveできない。 Form.clean_の返り値は再び代入されてNoneが入るので、このメソッドでは削除できない。 Form.cleanでpopする。 (Django 0.96) .. sourcecode:: python # -*- 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() ---- http://MiCHiLU.com/blog/posts/114/ - Added at Thu, 13 Sep 2007 10:52:34 +0900 - Last modified at Thu, 13 Sep 2007 10:53:37 +0900 This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License. http://creativecommons.org/licenses/by-nc-sa/2.1/jp/