从请求变量设置表单字段的默认值

时间:2011-09-25 12:47:19

标签: python django django-forms

在Django中,是否可以将表单字段的默认值设置为与请求变量绑定。例如request.META['REMOTE_ADDR']

这只是一个示例,它希望使用request变量中的任何标头,而不将其明确传递给表单。

感谢。

1 个答案:

答案 0 :(得分:1)

不可能,因为请求对象不是全局可用的,因此除非显式传入,否则它在表单中不可用。initial参数存在于您要解决的问题中。你应该使用

form = YourForm(..., initial={'your_field': request.META['REMOTE_ADDR'])

在你看来。

编辑:

如果您想明确传递request,可以使用类似的内容,然后在实例化表单时传递request=request

class YourForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')
        super(YourForm, self).__init__(*args, **kwargs)

    # ... use self.request in clean etc