是否有明显的方法可以在没有实例设置逻辑的情况下将ModelForm
转换为常规Form
?
我有一个更新/创建ModelForm视图我想通过使用来自完全相同的字段列表的输入来转换为SearchView
来查询模型但是它会导致必需的字段和类型出现问题,因为{ {1}}立即将数据附加到ModelForm
。
我最终攻击了元类以获得我想要的东西但我觉得在我的眼睛覆盖某些功能之前我很容易就会错过一些解决方案。我真的不喜欢拉核心django代码...
其他形式的hackery比复制和粘贴整个元类更可取。
self.instance
更新
看起来class ModelFormMetaclass(type):
def __new__(cls, name, bases, attrs):
formfield_callback = attrs.pop('formfield_callback', None)
try:
parents = [b for b in bases if issubclass(b, ModelToForm)] #<-- here
# ... rest of class
class ModelToForm(BaseForm):
__metaclass__ = ModelFormMetaclass
负责实例构建/相关字段验证。
目前,我正在停用ModelForm._post_clean()
并查看我的位置。