如何将有关request.user的信息提供给clean方法

时间:2017-01-12 12:18:45

标签: django forms python-3.x

我有一张表格:

class CreateConferenceForm(forms.ModelForm):
    class Meta:
        model = Conference
        fields = ['name', 'participants']

    def clean(self):
        cleaned_data = super(CreateConferenceForm, self).clean()
        if not request.user.id in cleaned_data.get('participants'):
            raise forms.ValidationError('Error')

但我不知道如何从视图中导入请求对象,因为方法is_valid没有其他参数。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

为您的表单提供__init__方法,允许您传递用户:

def __init__(self, user, *args, **kwargs):
    self.user = user
    super().__init__(*args, **kwargs)

现在您可以在清洁中使用self.user。无论您在何处创建表单,请记住传递用户,例如:视图中的form = CreateConferenceForm(request.user, request.POST)