Rya*_*yan 71 python forms django model widget
我有一个表格,当我不想要它们时,根据需要出现几个字段.这是models.py的表单
class CircuitForm(ModelForm):
class Meta:
model = Circuit
exclude = ('lastPaged',)
def __init__(self, *args, **kwargs):
super(CircuitForm, self).__init__(*args, **kwargs)
self.fields['begin'].widget = widgets.AdminSplitDateTime()
self.fields['end'].widget = widgets.AdminSplitDateTime()
Run Code Online (Sandbox Code Playgroud)
在实际的Circuit模型中,字段定义如下:
begin = models.DateTimeField('Start Time', null=True, blank=True)
end = models.DateTimeField('Stop Time', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
我的views.py就在这里:
def addCircuitForm(request):
if request.method == 'POST':
form = CircuitForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/sla/all')
form = CircuitForm()
return render_to_response('sla/add.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能不需要这两个字段?
Dat*_*eed 111
如果您不想修改模型中字段的空白设置(这样做会破坏管理站点中的正常验证),您可以在Form类中执行以下操作:
def __init__(self, *args, **kwargs):
super(CircuitForm, self).__init__(*args, **kwargs)
for key in self.fields:
self.fields[key].required = False
Run Code Online (Sandbox Code Playgroud)
重新定义的构造函数不会损害任何功能.
ste*_*anw 17
如果模型字段为空= True,则表单字段上的required设置为False.否则,required = True
在这里说:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
看起来你正在做的一切正确.你可以检查一下它的值self.fields['end'].required
.
扩展 DataGreed 的答案,我创建了一个 Mixin,允许您fields_required
在Meta
类上指定一个变量,如下所示:
class MyForm(RequiredFieldsMixin, ModelForm):
class Meta:
model = MyModel
fields = ['field1', 'field2']
fields_required = ['field1']
Run Code Online (Sandbox Code Playgroud)
这里是:
class RequiredFieldsMixin():
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
fields_required = getattr(self.Meta, 'fields_required', None)
if fields_required:
for key in self.fields:
if key not in fields_required:
self.fields[key].required = False
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70840 次 |
最近记录: |