Django - AttributeError:' module'对象没有属性' admin'

时间:2016-08-09 12:17:04

标签: python django admin

我遇到了麻烦。

Python版本: 3.4.4

Django版本: 1.10

数据库类型/版本: SqlLite3

已安装的应用会计,注册管理机构......

模型(会计):银行,费用,......

模特(注册局):公司,......

通用关系:公司 - 银行,费用 - 公司,......

管理网站内联(会计):

class FeeAdmin(Admin):
    list_display = ['date', 'content_object']
    inlines = [registry.admin.CompanyInline]
...

管理站点内联(注册表):

class CompanyAdmin(Admin):
    list_display = ['__str__', 'contact_telephone', 'contact_cellphone', 'contact_email']
    list_filter = Admin.list_filter + ['residence_city']
    search_fields = ['company_name']
    inlines = [accounting.admin.BankInline]
...

问题:第二个已安装的应用程序在标题中显示错误,如果我在 settings.py 中切换订单,则其他应用程序会引发错误。第一个总是顺利运行:

inlines = [registry.admin.CompanyInline]
AttributeError: 'module' object has no attribute 'admin'

如果在会计后安装了注册表,或

inlines = [accounting.admin.BankInline]
AttributeError: 'module' object has no attribute 'admin'

如果订单被切换。

接头

accounting.admin:

from django.contrib import admin
from django.contrib.contenttypes import admin as ctadmin
from django.contrib.contenttypes.models import ContentType
import registry
from .models import Bank
from .models import Fee
...

registry.admin:

from django.contrib import admin
from django.contrib.contenttypes import admin as ctadmin
from django.contrib.contenttypes.models import ContentType
import accounting
from .models import Company
...

1 个答案:

答案 0 :(得分:2)

这是关于Python导入的问题。

导入包时,您不会自动访问其下的所有模块;你需要专门导入它们。因此,您需要明确执行import accounting然后访问accounting.admin等,而不是执行from accounting import admin然后尝试访问admin.BankInline