继承:在子文件中扩展模型类

时间:2014-11-23 21:36:14

标签: python django

我试图通过以下方式为django模型做继承:

from apps.main.models import Catalog

class ExtendedModel(Catalog):
    class Meta:
       abstract = True

    def print_hello(self):
        print 'hello!!'

但是,当我尝试使用该方法时,它表示找不到它:

>>> from apps.main.models_master_extension import ExtendedModel
>>> obj=ExtendedModel.objects.all()[0]
>>> obj
<Catalog: 81758604>
>>> obj.print_hello()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'Catalog' object has no attribute 'print_hello'

在另一个文件中扩展Catalog类的正确方法是什么?我需要这样做的原因是Catalog类中涉及的方法扩展了1000行,我想通过函数分离其中的一些。

1 个答案:

答案 0 :(得分:1)

要向模型类添加其他方法,您需要设置proxy=True

from apps.main.models import Catalog

 class CatalogMasterTitleCreation(Catalog):
     class Meta:
        proxy = True
    def print_hello(self):
        print 'hello!!'

https://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models