我有一个表单,我想在站点周围重复使用,但有时我想从表单中省略特定字段。在视图中初始化表单时是否可以这样做?
user1428660
问问题
51 次
2 回答
1
您可能无法删除字段,但您可以在表单的__init__
方法中覆盖表单的小部件。
from django import forms
class MyForm(forms.Form):
some_field=forms.CharField()
other_field=forms.CharField()
def __init__(self, my_criteria, *args,**kwrds):
super(MyForm,self).__init__(*args,**kwrds)
if my_criteria == 'this':
self.fields['some_field'].widget = forms.HiddenInput(required=False)
elif my_criteria == 'that':
self.fields['other_field'].widget=forms.HiddenInput(required=False)
#else: pass - leave it the way it is.
如果要呈现不同类型的表单,可以在声明表单时传入具有特定值的参数,并使用该参数HiddenInput
在运行时呈现小部件,从而将其隐藏在表单中
于 2013-06-21T00:14:56.170 回答
0
我认为只有 ModelForm 没有办法,但你可以做的是
fromd django.forms import forms
class MyForm(forms.Form):
text = forms.CharField()
another_text = forms.CharField()
在你看来是这样的:
from myforms import MyForm
from django.shortcuts import render
def view(request):
form = MyForm(request.POST)
model = MyModel()
model.text = form.clean['text']
model.another_text = "Some value"
model.save()
return render(request, 'template.html', {'form':form})
在你的 template.html 中:
<form action="">
{{form.text}}
</form>
这只会在您的 template.html 中显示一个文本字段
于 2013-06-21T00:04:32.967 回答