【问题标题】:Sphinx with Django - Model doesn't declare an explicit app label带有 Django 的 Sphinx - 模型没有声明显式的应用程序标签
【发布时间】:2017-09-07 08:35:59
【问题描述】:

我已经花费了无数个小时,但这仍然卡住了。文档太少了。使用 Django 1.10,尝试创建已给出各种错误的 Sphinx 文档。最后我被困在这里。我在我的主应用程序kyc_connect 中创建了一个示例模型,如下所示。

模型.py

from django.db import models
class example(models.Model):        
    filed1 = models.DateTimeField(auto_now=True)

    # class Meta:
    #     app_label = 'kyc_connect'

运行make_html 会出现以下错误。

RuntimeError: Model class kyc_connect.models.example doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Conf.py 导入设置

import os
import sys    
sys.path.insert(0, os.path.abspath('..'))
from django.conf import settings
settings.configure()
import django
django.setup()

当我包含Meta 类时,当前已注释掉,这个错误就消失了。 但是如果我包含一个带有ForeignKey 的模型并导入from django.contrib.auth.models import User 它会给出错误RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

INSTALLED_APPS

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework_swagger',
    'rest_framework',
    'rest_framework.authtoken',
    'kyc_connect',
    'kyc_connect_data_models',
    'kyc_rest_services.kyc_connect_accounts',
    'kyc_rest_services.kyc_connect_documents',
    'kyc_rest_services.kyc_connect_transaction_manager',
    'tasks',
    'elasticstack',
    'corsheaders',
    'haystack'
]

项目结构

kyc_connect:
  -config
  -docs
  -kyc_connect
    -models.py
    .
    .
  -kyc_connect_data_models
  -kyc_core
  -kyc_rest_services
    -kyc_connect_accounts
    -kyc_connect_transaction_manager
    .
    .
  .
  .

我已经有django.contrib.contentype 了。但是django似乎不明白。我不想声明元类。出了什么问题。任何帮助都会很棒。

【问题讨论】:

  • 你运行makemigratoinmigrate了吗?
  • 不,我什至不知道它是如何依赖它的,让我试试。
  • No changes detected。我的模型已经在数据库中。虽然添加 example 模型只是为了检查。
  • 您是否在某处导入您的kyc_connect 应用程序?如果是这样并且如果在加载模型之前进行导入,也会发生此错误。
  • 我刚刚找到了this question,解决方案是将'django.contrib.sites' 添加到您安装的应用程序中。你可以试试看。

标签: python django python-2.7 python-sphinx


【解决方案1】:

我在我的项目中遇到了同样的问题,最终通过删除我的 conf.py 文件中的 settings.configure() 并运行来解决它

make clean
make html

在我的文档目录中。

【讨论】:

    【解决方案2】:

    我在我的项目中遇到了同样的错误。我通过更改在所有应用程序文件中导入模型的方式来解决它。例如在 admin.py 中注册模型更改

    from project.app.models import YourModel
    

    到..

    from .models import Your.Model
    

    【讨论】:

      【解决方案3】:

      对于仍在为这个问题苦苦挣扎的其他人,这可能会有所帮助:

      请注意有:

      .. automodule:: appName.models
      

      而不是类似:

      .. automodule:: ProjectName.appName.models
      

      如果像我一样,出于某些原因,您更喜欢将 docs 目录添加到 django 根目录的父文件夹中,可以附加。

      注意:为了正常工作,我的视图和任务必须设置为:

      .. automodule:: ProjectName.appName.tasks
      .. automodule:: ProjectName.appName.views
      

      希望它能节省时间。

      【讨论】:

        【解决方案4】:

        你可以尝试替换

        settings.configure()
        

        os.environ['DJANGO_SETTINGS_MODULE'] = 'ProjectName.settings',
        

        然后在此处查看abspath()

        sys.path.insert(0, os.path.abspath('..'))
        

        所以它应该指向“docs”文件夹的父目录,

        然后检查index.rst

        .. automodule:: appName.tasks
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-05
          • 2018-10-19
          • 1970-01-01
          • 1970-01-01
          • 2020-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多