0

我正在尝试使用 django 项目的 Sphinx 生成 html 文档。make html在 windows cmd 上执行时出现以下错误。Mysettings.py包含我构建的应用程序的条目,该 models.py文件所属的位置。出于保密原因,我在这里将其称为 project_name。

INSTALLED_APPS = [
    'project_name.apps.project_nameAppConfig',
    'django.contrib.admin',
    'django.contrib.sites',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'import_export',
    'nested_admin',
    'report_builder',
    'rest_framework',
    'ajax_select',
]

错误跟踪:

> C:\django_project\docs\source\models.rst:4: WARNING: autodoc: failed to
> import module 'models'; the following exception was raised: Traceback
> (most recent call last):   File
> "C:\Users\...\AppData\Local\Continuum\Anaconda3\lib\site-packages\sphinx\ext\autodoc.py",
> line 658, in import_object
>     __import__(self.modname)   File "C:\django_project\project_name\models.py", line 8, in <module>
>     class Project(models.Model):   File "C:\Users\...\AppData\Local\Continuum\Anaconda3\lib\site-packages\django\db\models\base.py",
> line 118, in __new__
>     "INSTALLED_APPS." % (module, name) RuntimeError: Model class models.Project doesn't declare an explicit app_label and isn't in an
> application in INSTALLED_APPS.

谢谢你的帮助!

4

1 回答 1

1

为我解决这个问题的是创建一个抽象类并从那里继承其他模型类,而不是直接从 django.db 模型类。在代码中沿着这条线:

from django.db import models
class BaseModel(models.Model):

    class Meta:
        abstract = True  # specify this model as an Abstract Model    
        app_label = 'your_project_name'


class Project(BaseModel):
    name = models.CharField(max_length=200, unique=True)
    description = models.TextField
    client = models.CharField(max_length=200)

    def __str__(self):
        return self.name

...

从这里得到了想法:模型类没有声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

于 2017-12-10T11:01:00.847 回答