2012-04-19 200 views
0

所以我想在我的模型中有隐藏的字段,但包含默认值,因此无法更改,因此被隐藏(是否有更安全的方法使默认字段将始终是变量?)无论如何我使用摆脱ModelForm中的标签?

username = forms.CharField(widget=forms.HiddenInput()) 

它只是隐藏了实际输入字段,让标签仅仅是免费网站的HTML,所以是没有办法,我可以摆脱,只是自由浮动标签周围的一种方式?是否有更好的方式将当前登录用户的用户名称提交给模型?

现在,我用这样的形式inital:

USER=request.user 
ref_create = CashtextsForm(initial={'username': USER}) 

是secureish?

回答

4

如果用户不需要编辑表单字段,那么甚至不会将其包含在模型表单中 - 甚至可以由用户操作隐藏表单输入。

要删除它,只需将其添加到排除的元组在元类模型的形式:

class MyForm(forms.ModelForm): 
    class Meta: 
     model = MyModel 
     exclude = ('username',) 

然后,设置username当前用户他们已提交表单后,您会使用检查后如下代码是否为form.is_valid()

mymodel = form.save(commit=False) 
mymodel.username = request.user 
mymodel.save() 
+0

谢谢。我想隐藏的表单不是很安全,但我不知道commit = false。谢谢您的帮助 – city 2012-04-19 20:14:05