Django Forms - 如何检查__INIT__方法是否提供了request.POST

时间:2017-09-06 11:24:40

标签: django django-forms

在使用Django表单两年后,我遇到了与.col-md-offset-1方法相关的以下困境:

我有一个Django表单定义如下:

__init__

如果我像这样初始化表单,那么这段代码就可以了:

class MyForm(forms.ModelForm): def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(MyForm, self).__init__(*args, **kwargs) if not MyModel.objects.filter(user = self.user).exists(): self.fields['field_1'].widget = forms.HiddenInput() self.fields['field_2'].widget.attrs['placeholder'] = 'Enter value'

然而,当我尝试以下列方式保存用户输入时出现问题:

my_form = MyForm()

我的观点是,我不想浪费代码执行时间来设置占位符属性,或者在用户提交表单后决定是否应该隐藏某个字段。

我担心的可能是因为我滥用了my_form = MyForm(request.POST)方法? 有没有办法检查是否已提供request.POST参数?如果是,那么执行此检查是否被认为是最佳实践,并且只有在未提供request.POST的情况下才会考虑设置占位符,初始值等?

1 个答案:

答案 0 :(得分:2)

您可以查看self.is_bound;只有将数据传递给表单才会出现这种情况。

然而,我真的认为你在这里过度优化。这只会对代码的性能产生很小的影响。