所以我试图让我的模型中的字段隐藏但是包含默认值并且不能被更改因此被隐藏(是否有更安全的方式使默认字段永远是变量?)无论如何当我使用
username = forms.CharField(widget=forms.HiddenInput())
它只隐藏实际的输入字段,并让标签在网站的html上是免费的,那么有没有办法可以摆脱只是自由浮动的标签?是否有更好的方式提交说当前登录用户的用户名到模型?
现在我在这样的表格上使用inital:
USER=request.user
ref_create = CashtextsForm(initial={'username': USER})
是安全吗?
答案 0 :(得分: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()