无法通过帐户实例访问管理器
Manager isn't accessible via Account instances
在使用 django-organizations 给我的项目组织时,我为帐户制作了一个单独的应用程序。
使用文档 (https://django-organizations.readthedocs.io/en/latest/cookbook.html#advanced-customization-using-abstract-models) 中的代码,我认为这是一个基本案例,我正在尝试将它们添加到
admin.py
页面:
from accounts import models as AccountModels
@admin.register(AccountModels.Account)
class AccountAdmin(admin.ModelAdmin):
list_display = ['slug', 'active', ]
尝试在帐户管理页面(位于 http://localhost:8000/adminaccounts/account/
)查看列表时出现错误 [ps - add
页面呈现,但会提供相同的错误保存时]:
AttributeError at /adminaccounts/account/
Manager isn't accessible via Account instances
查看错误,我不应该在实例上调用它,而只是 Class。但是默认的管理模板正在渲染这个页面,所以我对编辑它持谨慎态度。关于在管理员 class 中设置继承的 class,我是否遗漏了什么? (组织用户和组织所有者都正确显示,增加了我的困惑)
这是显示它正在尝试访问实例的堆栈(但我无法在堆栈跟踪中找到哪一行产生了错误,只是它在 {{content}}
部分模板块):
/Users/me/.virtualenvs/myFirst/lib/python3.6/site-packages/django/contrib/admin/utils.py in lookup_field
attr = getattr(obj, name) ...
▼ Local vars
Variable Value
model_admin <accounts.admin.AccountAdmin object at 0x11e0185f8>
name 'active'
obj <Account: Funny Clowns With Paper Boats>
opts <Options for Account>
/Users/me/.virtualenvs/myFirst/lib/python3.6/site-packages/django/db/models/manager.py in __get__
raise AttributeError("Manager isn't accessible via %s instances" % cls.__name__) ...
▼ Local vars
Variable Value
cls <class 'accounts.models.Account'>
instance <Account: Funny Clowns With Paper Boats>
self <django.db.models.manager.ManagerDescriptor object at 0x11dabb978>
帐户models.py
(与文档相同):
from django.db import models
from organizations.abstract import (AbstractOrganization,
AbstractOrganizationUser,
AbstractOrganizationOwner)
class Account(AbstractOrganization):
monthly_subscription = models.IntegerField(default=1000)
class AccountUser(AbstractOrganizationUser):
user_type = models.CharField(max_length=1, default='')
class AccountOwner(AbstractOrganizationOwner):
pass
我在 accounts
应用程序中没有任何功能视图或基于 Class 的视图,所以我不知道我是否应该覆盖管理器或搜索查询或视图.. .
试图覆盖管理员的视图(?):
@admin.register(Account)
class AccountAdmin(BaseOrganizationAdmin):
def get_queryset(self, request):
qs = super(AccountAdmin, self).get_queryset(request)
print(Account) # <class 'accounts.models.Account'>
print(type(Account)) # <class 'organizations.base.OrgMeta'>
print(type(qs)) # <class 'django.db.models.query.QuerySet'>
return qs # or Account
这会产生先前的错误,或者 type object 'Account' has no attribute 'filter'
在你的代码中你有:
list_display = ['slug', 'active', ]
但是 active
指的是 ActiveManager
实例。你要is_active
,指的是模型字段
在使用 django-organizations 给我的项目组织时,我为帐户制作了一个单独的应用程序。
使用文档 (https://django-organizations.readthedocs.io/en/latest/cookbook.html#advanced-customization-using-abstract-models) 中的代码,我认为这是一个基本案例,我正在尝试将它们添加到
admin.py
页面:
from accounts import models as AccountModels
@admin.register(AccountModels.Account)
class AccountAdmin(admin.ModelAdmin):
list_display = ['slug', 'active', ]
尝试在帐户管理页面(位于 http://localhost:8000/adminaccounts/account/
)查看列表时出现错误 [ps - add
页面呈现,但会提供相同的错误保存时]:
AttributeError at /adminaccounts/account/
Manager isn't accessible via Account instances
查看错误,我不应该在实例上调用它,而只是 Class。但是默认的管理模板正在渲染这个页面,所以我对编辑它持谨慎态度。关于在管理员 class 中设置继承的 class,我是否遗漏了什么? (组织用户和组织所有者都正确显示,增加了我的困惑)
这是显示它正在尝试访问实例的堆栈(但我无法在堆栈跟踪中找到哪一行产生了错误,只是它在 {{content}}
部分模板块):
/Users/me/.virtualenvs/myFirst/lib/python3.6/site-packages/django/contrib/admin/utils.py in lookup_field
attr = getattr(obj, name) ...
▼ Local vars
Variable Value
model_admin <accounts.admin.AccountAdmin object at 0x11e0185f8>
name 'active'
obj <Account: Funny Clowns With Paper Boats>
opts <Options for Account>
/Users/me/.virtualenvs/myFirst/lib/python3.6/site-packages/django/db/models/manager.py in __get__
raise AttributeError("Manager isn't accessible via %s instances" % cls.__name__) ...
▼ Local vars
Variable Value
cls <class 'accounts.models.Account'>
instance <Account: Funny Clowns With Paper Boats>
self <django.db.models.manager.ManagerDescriptor object at 0x11dabb978>
帐户models.py
(与文档相同):
from django.db import models
from organizations.abstract import (AbstractOrganization,
AbstractOrganizationUser,
AbstractOrganizationOwner)
class Account(AbstractOrganization):
monthly_subscription = models.IntegerField(default=1000)
class AccountUser(AbstractOrganizationUser):
user_type = models.CharField(max_length=1, default='')
class AccountOwner(AbstractOrganizationOwner):
pass
我在 accounts
应用程序中没有任何功能视图或基于 Class 的视图,所以我不知道我是否应该覆盖管理器或搜索查询或视图.. .
试图覆盖管理员的视图(?):
@admin.register(Account)
class AccountAdmin(BaseOrganizationAdmin):
def get_queryset(self, request):
qs = super(AccountAdmin, self).get_queryset(request)
print(Account) # <class 'accounts.models.Account'>
print(type(Account)) # <class 'organizations.base.OrgMeta'>
print(type(qs)) # <class 'django.db.models.query.QuerySet'>
return qs # or Account
这会产生先前的错误,或者 type object 'Account' has no attribute 'filter'
在你的代码中你有:
list_display = ['slug', 'active', ]
但是 active
指的是 ActiveManager
实例。你要is_active
,指的是模型字段