在表单字段验证中获取请求

时间:2013-07-24 09:46:33

标签: django forms validation request field

我有一个表单,验证取决于已登录的用户。对于某些用户,某些值是有效的,对于其他用户,它们是无效的。什么是有效的,什么是无效的是动态的 - 我不能为每个用户组创建新的表单。

我还需要更多表单中的相同验证,因此我创建了自定义表单字段。对于这个自定义表单字段,我需要以某种方式传递用户实例以检查该值是否有效。

怎么做?

2 个答案:

答案 0 :(得分:7)

我这样做:

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)

答案 1 :(得分:1)

您不需要额外的字段。

您可以在表单的init()方法中按passing it explicitlyfetching it from the request访问当前用户。

然后,您可以在表单cleaning时使用检索到的值。

如果您需要多种形式的此功能,我可以创建专用表单继承的base class或创建一个添加所需功能的mixin。