在我的Django应用程序中,有几个应用程序是通过apps.py文件激活了AppConfig的,并且有一个BaseAppConfig
类:
class BaseAppConfig(AppConfig):
launchpad = None
def __init__(self, app_name, app_module):
AppConfig.__init__(self, app_name, app_module)
self.launchpad = self.Launchpad()
class Launchpad:
show = True
icon = "fa fa-cogs"
我在自定义应用中使用此
BaseAppConfig
,例如:class CustomerConfig(BaseAppConfig):
name = 'customer'
class Launchpad:
icon = "fa fa-book"
当我尝试使用
show
到达CustomerConfig
的customer_config.launchpad.show
属性时,它将返回AttributeError
。Python像new一样覆盖所有内部类。
我如何才能实现仅扩展内部类的属性?
最佳答案
这是因为您要覆盖Launchpad
类。因此,它不能回退并根据需要解析为BaseAppConfig
。
您需要将班级更改为此,以便使其正常运行,
class CustomerConfig(BaseAppConfig):
name = 'customer'
class Launchpad(BaseAppConfig.Launchpad):
icon = "fa fa-book"
这样,它就可以引用基类
Launchpad
实例。