在我的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到达CustomerConfigcustomer_config.launchpad.show属性时,它将返回AttributeError

Python像new一样覆盖所有内部类。

我如何才能实现仅扩展内部类的属性?

最佳答案

这是因为您要覆盖Launchpad类。因此,它不能回退并根据需要解析为BaseAppConfig

您需要将班级更改为此,以便使其正常运行,

class CustomerConfig(BaseAppConfig):
     name = 'customer'

    class Launchpad(BaseAppConfig.Launchpad):
        icon = "fa fa-book"


这样,它就可以引用基类Launchpad实例。

09-12 09:08