从 Django ModelForm 中动态排除字段
Dynamically excluding field from Django ModelForm
我想以编程方式排除表单中的一个字段。
目前我有这个:
class RandomForm(BaseForm):
def __init__(self, *args, **kwargs):
# This doesn't work
if kwargs["instance"] is None:
self._meta.exclude = ("active",)
super(ServiceForm, self).__init__(*args, **kwargs)
# This doesn't work either
if kwargs["instance"] is None:
self._meta.exclude = ("active",)
class Meta:
model = models.Service
fields = (...some fields...)
如何仅在创建新模型时排除 active
字段?
你可以这样解决:
class RandomForm(ModelForm):
def __init__(self, *args, **kwargs):
super(RandomForm, self).__init__(*args, **kwargs)
if not self.instance:
self.fields.pop('active')
class Meta:
model = models.Service
fields = (...some fields...)
Django ModelForm 提供 exclude
属性。你试过了吗?
class RandomForm(ModelForm):
class Meta:
model = models.Service
exclude = ['is_active']
我想以编程方式排除表单中的一个字段。 目前我有这个:
class RandomForm(BaseForm):
def __init__(self, *args, **kwargs):
# This doesn't work
if kwargs["instance"] is None:
self._meta.exclude = ("active",)
super(ServiceForm, self).__init__(*args, **kwargs)
# This doesn't work either
if kwargs["instance"] is None:
self._meta.exclude = ("active",)
class Meta:
model = models.Service
fields = (...some fields...)
如何仅在创建新模型时排除 active
字段?
你可以这样解决:
class RandomForm(ModelForm):
def __init__(self, *args, **kwargs):
super(RandomForm, self).__init__(*args, **kwargs)
if not self.instance:
self.fields.pop('active')
class Meta:
model = models.Service
fields = (...some fields...)
Django ModelForm 提供 exclude
属性。你试过了吗?
class RandomForm(ModelForm):
class Meta:
model = models.Service
exclude = ['is_active']