検証がログインしたユーザーに依存するフォームがあります。特定の値が有効なユーザーもいれば、無効なユーザーもいます。有効なものと無効なものは動的です。ユーザー グループごとに新しいフォームを作成することはできません。
さらに、これと同じ検証をより多くのフォームで行う必要があるため、カスタム フォーム フィールドを作成しました。このカスタム フォーム フィールドに、何らかの方法でユーザー インスタンスを渡して、値が有効かどうかを確認する必要があります。
これを行う方法?
検証がログインしたユーザーに依存するフォームがあります。特定の値が有効なユーザーもいれば、無効なユーザーもいます。有効なものと無効なものは動的です。ユーザー グループごとに新しいフォームを作成することはできません。
さらに、これと同じ検証をより多くのフォームで行う必要があるため、カスタム フォーム フィールドを作成しました。このカスタム フォーム フィールドに、何らかの方法でユーザー インスタンスを渡して、値が有効かどうかを確認する必要があります。
これを行う方法?
私はそのようにやっています:
class EventForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
# doing stuff with the user…
super(EventForm, self).__init__(*args, **kwargs)
ビュークラス/メソッドでは、次のようにフォームをインスタンス化する必要があります:
form = EventForm(user=request.user, data=request.POST)