4

一部のデータに対して追加の検証を実行できるように、ModelForm の clean メソッドに引数を渡そうとしています。

私の views.py ファイルには、次のものがあります。

page_data = page_form.cleaned_data(foo="bar")

私の clean_url メソッドには、次のものがあります。

def clean_url(self, **kwargs):
    url = self.cleaned_data['url']

    if kwargs['foo'] == url:
        query = FlatPage.objects.filter(url=url)
        if query.exists():
            raise forms.ValidationError(("This url is already being used by the '%s' page.") % (query[0].title))

    return url

の KeyError が発生し続けfooます。以前に kwarg 変数を渡したことがあるので、どこで間違いを犯しているのかわかりませんが、クリーンなメソッドには渡したことがありません。

4

2 に答える 2

12

重要なのは、パラメータをModelFormのinitメソッドに渡すことです。

def __init__(self, *args, **kwargs):
    self.url = kwargs.pop('url', None)
    super(FlatPageForm, self).__init__(*args, **kwargs)

この変数は、self.urlを呼び出すことにより、cleanメソッドで参照できます。

def clean_url(self):
    url = self.cleaned_data['url']
    if self.url == url:
         #do something
    else:
         #do something else
于 2011-09-10T20:20:37.540 に答える