如何重写Django模型的__new__元类方法
我正在使用 Django 1.6
和 Django 中的 模型继承
。我想做的是,连接一个新的扩展类。
在 Python 中可以这样做:
class Meta(type):
def __new__(cls, name, bases, newattrs):
do_what_you_want_before()
result= super(Meta, cls).__new__(cls, name, bases, newattrs)
do_what_you_want_after()
return result
class Foo:
__metaclass__ = Meta
class SubFoo(Foo):
pass
当这部分代码被初始化时,自定义的 __new__
方法会被调用。
我该如何在 Django 中使用模型继承来实现这个呢?当你尝试用 Django 模型这样做时,会出现一个错误,如下所示:
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
谢谢。