python - python 模型类不声明显式 app_label,并且不在INSTALLED_APPS中的应用程序中

我在使用Sphinx,尝试为Django项目生成文档。


wdland.models


==============



.. automodule:: wdland.models


 :members:


 :undoc-members:


 :show-inheritance:



但是得到以下错误


WARNING: /home/fabou/wdlandenvpy3/source/docs/wdland.rst:9: (WARNING/2) autodoc: failed to import module 'wdland.models'; the following exception was raised:


Traceback (most recent call last):


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/sphinx/ext/autodoc.py", line 657, in import_object


 __import__(self.modname)


 File"/home/fabou/wdlandenvpy3/source/wdland/models.py", line 35, in <module>


 class Device(models.Model):


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/django/db/models/base.py", line 118, in __new__


"INSTALLED_APPS." % (module, name)


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



现在我想对views.py执行同样的操作,在.rst文件中执行此操作


wdland.views


=============



.. automodule:: wdland.views


 :members:


 :undoc-members:


 :show-inheritance:



但是,在编译时,我得到了这个新的错误,


WARNING: /home/fabou/wdlandenvpy3/source/docs/wdland.rst:19: (WARNING/2) autodoc: failed to import module 'wdland.views'; the following exception was raised:


Traceback (most recent call last):


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/sphinx/ext/autodoc.py", line 657, in import_object


 __import__(self.modname)


 File"/home/fabou/wdlandenvpy3/source/wdland/views.py", line 2, in <module>


 from . import views


 File"/home/fabou/wdlandenvpy3/source/wdland/views.py", line 19, in <module>


 from .forms import TicketForm, TicketAmendForm


 File"/home/fabou/wdlandenvpy3/source/wdland/forms.py", line 1, in <module>


 from django.contrib.auth.forms import AuthenticationForm


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/django/contrib/auth/forms.py", line 12, in <module>


 from django.contrib.auth.models import User


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/django/contrib/auth/models.py", line 6, in <module>


 from django.contrib.contenttypes.models import ContentType


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/django/contrib/contenttypes/models.py", line 139, in <module>


 class ContentType(models.Model):


 File"/home/fabou/wdlandenvpy3/lib/python3.5/site-packages/django/db/models/base.py", line 118, in __new__


"INSTALLED_APPS." % (module, name)


RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.



这里是相关的Sphinx配置


#!/usr/bin/env python3


# -*- coding: utf-8 -*-



import django


import os


import sphinx_rtd_theme


import sys



from django.conf import settings



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


settings.configure()


django.setup()



试图记录urls.py会产生类似的错误。


import datetime



from django.core.urlresolvers import reverse


from django.db.models import Q


from django.http import Http404, HttpResponse


from django.template.loader import render_to_string


from django.shortcuts import render, HttpResponseRedirect


from django.views import generic


from random import randint


from script.serversnmp import get_ubuntu_snmp, get_esxi_snmp


from script.wdlandtools import get_monthly_sess_hour_stats,


 get_monthly_sess_nb_stats,


 get_monthly_ticket_stats,


 get_ticket_category_stats,


 clean_usersession_tbl, update_usertotals_tbl,


 send_email_notification, get_adsl_usage


from wdland.models import Device, UserSession, SupportTicket, News, UserTotals,


 SavedUsrSess


from .forms import TicketForm, TicketAmendForm



from jchart import Chart


from jchart.config import Axes, DataSet, rgba



时间:

解决方案是,在你的应用程序中的BaseModel抽象类上创建一个models.py,


class BaseModel(models.Model):



 class Meta:


 abstract = True # specify this model as an Abstract Model


 app_label = 'wdland'



我认为,您在django INSTALLED_APPS的设置中没有django.contrib.contenttypes.so,将其添加到django的设置中。

...