假设我的表单如下:
from django import forms
class Foo(forms.ModelForm):
class Meta:
model = SomeModel
fields = ('field1', 'field2', 'field3')
如何根据某些条件包括或排除字段?
编辑:
不好的是,我应该澄清一下,需要根据要渲染的每个模型上的值来确定条件。这意味着我需要根据当前正在渲染的模型的值添加(或删除)字段。
您可以通过__init__
以下方式修改表单字段:
from django import forms
class Foo(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if condition:
self.fields.pop('field1')
class Meta:
model = SomeModel
fields = ('field1', 'field2', 'field3')
请注意,如果需要该字段,这可能导致表单的验证失败。
更好的方法可能是隐藏字段,而不是完全删除它:
class Foo(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if condition:
form.fields['field1'].widget = forms.HiddenInput()
class Meta:
model = SomeModel
fields = ('field1', 'field2', 'field3')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句