【发布时间】:2011-04-25 05:40:19
【问题描述】:
给定一个表单类(在你巨大的 Django 应用程序的深处)..
class ContactForm(forms.Form):
name = ...
surname = ...
考虑到您想在不扩展或修改表单类本身的情况下向该表单添加另一个字段,为什么以下方法不起作用?
ContactForm.another_field = forms.CharField(...)
(我的第一个猜测是 Django 使用的元类hackery 仅在第一次构造表单类时应用。如果是这样,是否有办法重新声明该类来克服这个问题?)
【问题讨论】:
-
你几乎肯定是对的。这正是您无法轻松地将新字段添加到 models.Model 子类的原因。
-
对于模型,即使猴子补丁有效,也会出现“syncdb”问题。但是在某些时候,猴子补丁可能会挽救生命,恕我直言。
标签: python django django-forms monkeypatching