我在 Django 中使用 Django 1.6
和 model inheritance
。我想做的是, Hook 新类扩展。
它会像用 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
谢谢。
最佳答案
不是从 type
继承,而是从 django.db.models.base.ModelBase
( source ) 继承。
关于python - 如何覆盖 Django 中模型的 __new__ 元类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527275/