首页 > 解决方案 > Django - 模型元选项 app_label 不起作用

问题描述

我有以下 Django 应用程序结构

apps
    ├── apartment
    │   ├── migrations
    │   ├── apps.py
    │   ├── models
    │   │   ├── apartment.py
    │   │   ├── core.py

我添加apps.apartment.apps.ApartmentConfigINSTALLED APPS. apartment.py看起来像:

class Apartment(Model):
    class Meta:
        app_label = 'apartment'

当我运行 makemigrations 时,它说no changes detected。我在我的apps.py.

class ApartmentConfig(AppConfig):
    name = 'apps.apartment'
    def ready(self):
        print(self.label)  # returns 'apartment'
        from .models.apartment import Apartment

现在它工作正常。编写新模型时我应该总是这样做吗?正如文档所说:

如果模型是在 INSTALLED_APPS 中的应用程序之外定义的,它必须声明它属于哪个应用程序: app_label = 'myapp'

谁能解释我为什么它不起作用?有没有更好的方法可以在不导入所有模型的情况下解决这个问题?

标签: pythondjangodjango-models

解决方案


推荐阅读