Django - AttributeError: 'module' object has no attribute 'admin'

Django - AttributeError: 'module' object has no attribute 'admin'

我有麻烦了。

Python版本:3.4.4

Django 版本:1.10

DB type/version: SqlLite3

已安装的应用程序: 会计、注册、...

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

模型(注册): 公司,...

通用关系: Company-Bank, Fee-Company, ...

管理站点内联(会计):

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'

如果调换顺序。

Headers:

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
...

这是一个关于 Python 导入的问题。

当你导入一个包时,你不会自动访问它下面的所有模块;你需要专门导入那些。因此,与其执行 import accounting 然后尝试访问 accounting.admin,不如显式执行 from accounting import admin 然后访问 admin.BankInline