Nic*_* P. 3 django django-forms
我想以编程方式启用默认情况下排除的字段...
模型:
class MyModel(models.Model):
name = models.CharField(max_length=100)
an_excluded_field = models.TextField()
my_bool = models.BooleanField(default=False) # this is the field to conditionally enable...
Run Code Online (Sandbox Code Playgroud)
形成:
class MyModelForm(ModelForm):
class Meta:
model = EmailTemplate
excludes = ('an_excluded_field', 'my_bool')
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情(或者那种效果......):
form = MyModelForm(enable_my_bool=True)
Run Code Online (Sandbox Code Playgroud)
这几乎就像这篇文章(我希望默认排除字段): 如何在表单的子类中排除ModelForm中的声明字段?
1)您可以定义表单的第二个版本:
class MyExcludedModelForm(MyModelForm):
class Meta:
excludes = ('my_bool',) # or could use fields in similar manner
Run Code Online (Sandbox Code Playgroud)
2)您可以覆盖表单的构造函数:(
与您引用的其他SO帖子中描述的相同)
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
if not kwargs.get('enable_my_bool', false):
self.fields.pop('my_bool')
super(MyModelForm, self).__init__(*args, **kwargs) # maybe move up two lines? (see SO comments)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |