我试图通过以下方式为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行,我想通过函数分离其中的一些。
答案 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