Django 管理视图中的用户相关属性

Django 管理视图中的用户相关属性,django,Django,Django==1.10.2 正在尝试将管理员视图中的组成员相关属性用于模型: from django.utils.translation import ugettext as _ from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): group = models.ForeignKey( 'Group',

Django==1.10.2

正在尝试将管理员视图中的
组成员
相关属性用于模型:

from django.utils.translation import ugettext as _
from django.contrib.auth.models import AbstractUser
from django.db import models


class User(AbstractUser):
    group = models.ForeignKey(
        'Group',
        verbose_name=_('Groupe'),
        related_name='members',
        blank=True,
        null=True,
    )


class Group(models.Model):
    name = models.CharField(
        max_length=255,
        unique=True,
        verbose_name=_('Nom'),
        error_messages={
            'unique': _('Ce nom est déjà utilisée.'),
        },
    )
    creator = models.ForeignKey(
        User,
        related_name='created_groups',
        blank=False,
        null=False,
    )

    def __str__(self):
        return self.name
管理员视图:

from django.contrib import admin
from meal.models import Group, User


class GroupAdmin(admin.ModelAdmin):
    fields = ('name', 'members')
    list_display = ('name', 'members')
    search_fields = (
        'name',
    )


class UserAdmin(admin.ModelAdmin):
    fields = ('email', 'last_name', 'first_name', 'group')
    list_display = ('email', 'last_name', 'first_name', 'group')
    search_fields = (
        'username',
        'email',
        'first_name',
        'last_name',
    )

admin.site.register(Group, GroupAdmin)
admin.site.register(User, UserAdmin)
但是管理员视图引发错误:

位于/admin/mean/group/“manager”的键错误

全迹

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/admin/meal/group/

Django Version: 1.10.2
Python Version: 3.5.2
Installed Applications:
['django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'meal',
 'debug_toolbar',
 'bootstrap3',
 'allauth',
 'allauth.account',
 'allauth.socialaccount',
 'django_extensions']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware']


Template error:
In template /home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/templates/admin/change_list.html, error at line 82
   manager   72 :         {% endif %}
   73 :       {% endblock %}
   74 : 
   75 :       <form id="changelist-form" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %} novalidate>{% csrf_token %}
   76 :       {% if cl.formset %}
   77 :         <div>{{ cl.formset.management_form }}</div>
   78 :       {% endif %}
   79 : 
   80 :       {% block result_list %}
   81 :           {% if action_form and actions_on_top and cl.show_admin_actions %}{% admin_actions %}{% endif %}
   82 :            {% result_list cl %} 
   83 :           {% if action_form and actions_on_bottom and cl.show_admin_actions %}{% admin_actions %}{% endif %}
   84 :       {% endblock %}
   85 :       {% block pagination %}{% pagination cl %}{% endblock %}
   86 :       </form>
   87 :     </div>
   88 :   </div>
   89 : {% endblock %}
   90 : 

Traceback:

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/utils.py" in lookup_field
  274.         f = _get_non_gfk_field(opts, name)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/utils.py" in _get_non_gfk_field
  312.         raise FieldDoesNotExist()

During handling of the above exception (), another exception occurred:

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  39.             response = get_response(request)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  217.                 response = self.process_exception_by_middleware(e, request)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  215.                 response = response.render()

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/response.py" in render
  109.             self.content = self.rendered_content

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/response.py" in rendered_content
  86.         content = template.render(context, self._request)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/backends/django.py" in render
  66.             return self.template.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render
  208.                     return self._render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/test/utils.py" in instrumented_test_render
  94.     return self.nodelist.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render
  994.                 bit = node.render_annotated(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render_annotated
  961.             return self.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/loader_tags.py" in render
  174.         return compiled_parent._render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/test/utils.py" in instrumented_test_render
  94.     return self.nodelist.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render
  994.                 bit = node.render_annotated(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render_annotated
  961.             return self.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/loader_tags.py" in render
  174.         return compiled_parent._render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/test/utils.py" in instrumented_test_render
  94.     return self.nodelist.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render
  994.                 bit = node.render_annotated(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render_annotated
  961.             return self.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/loader_tags.py" in render
  70.                 result = block.nodelist.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render
  994.                 bit = node.render_annotated(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render_annotated
  961.             return self.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/loader_tags.py" in render
  70.                 result = block.nodelist.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render
  994.                 bit = node.render_annotated(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/base.py" in render_annotated
  961.             return self.render(context)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/template/library.py" in render
  225.         _dict = self.func(*resolved_args, **resolved_kwargs)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/templatetags/admin_list.py" in result_list
  339.             'results': list(results(cl))}

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/templatetags/admin_list.py" in results
  315.             yield ResultList(None, items_for_result(cl, res, None))

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/templatetags/admin_list.py" in __init__
  306.         super(ResultList, self).__init__(*items)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result
  217.             f, attr, value = lookup_field(field_name, result, cl.model_admin)

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/contrib/admin/utils.py" in lookup_field
  290.                 value = attr()

File "/home/bastien/Projects/meal/venv3.5/lib/python3.5/site-packages/django/db/models/fields/related_descriptors.py" in __call__
  524.             manager = getattr(self.model, kwargs.pop('manager'))

Exception Type: KeyError at /admin/meal/group/
Exception Value: 'manager'
环境:
请求方法:获取
请求URL:http://127.0.0.1:8000/admin/meal/group/
Django版本:1.10.2
Python版本:3.5.2
已安装的应用程序:
['django.contrib.sites',
“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
"饭",,
“调试工具栏”,
“bootstrap3”,
“阿拉斯”,
“allauth.账户”,
“allauth.socialaccount”,
“django_扩展”]
已安装的中间件:
['django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xFrameOptions中间件',
'调试工具条.中间件.调试工具条中间件']
模板错误:
在template/home/bastien/Projects/fine/venv3.5/lib/python3.5/site-packages/django/contrib/admin/templates/admin/change_list.html中,第82行出现错误
管理器72:{%endif%}
73:{%endblock%}
74 : 
75:{%csrf_令牌%}
76:{%if cl.formset%}
77:{{cl.formset.management_form}
78:{%endif%}
79 : 
80:{%block result_list%}
81:{%if动作表单和动作在顶部和cl.show行政动作%}{%admin动作%}{%endif%}
82:{%result_list cl%}
83:{%if action_表单和底部的actions_和cl.show_admin_actions%}{%admin_actions%}{%endif%}
84:{%endblock%}
85:{%block分页%}{%pagination cl%}{%endblock%}
86 :       
87 :     
88 :   
89:{%endblock%}
90 : 
回溯:
文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site packages/django/contrib/admin/utils.py”位于lookup_字段中
274f=\u获取\u非\u gfk\u字段(选项,名称)
文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site packages/django/contrib/admin/utils.py”位于非gfk字段中
312raise FIELDOESNOTEXTIST()
在处理上述异常()期间,发生了另一个异常:
文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site-packages/django/core/handlers/exception.py”位于内部
39响应=获取响应(请求)
文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site packages/django/core/handlers/base.py”在_get_response中
217response=self.process\u异常\u由\u中间件(e,请求)
文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site packages/django/core/handlers/base.py”在_get_response中
215response=response.render()
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/response.py”
109self.content=自渲染内容
呈现内容中的文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site packages/django/template/response.py”
86content=template.render(上下文、self.\u请求)
render中的文件“/home/bastien/Projects/fine/venv3.5/lib/python3.5/site packages/django/template/backends/django.py”
66返回self.template.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
208返回self.\u呈现(上下文)
文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/test/utils.py”,在插入指令的测试呈现中
94返回self.nodelist.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
994位=节点。带注释的渲染(上下文)
render_注释中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
961返回self.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/loader_tags.py”
174返回编译的\u父对象。\u呈现(上下文)
文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/test/utils.py”,在插入指令的测试呈现中
94返回self.nodelist.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
994位=节点。带注释的渲染(上下文)
render_注释中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
961返回self.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/loader_tags.py”
174返回编译的\u父对象。\u呈现(上下文)
文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/test/utils.py”,在插入指令的测试呈现中
94返回self.nodelist.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
994位=节点。带注释的渲染(上下文)
render_注释中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
961返回self.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/loader_tags.py”
70结果=block.nodelist.render(上下文)
render中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
994位=节点。带注释的渲染(上下文)
render_注释中的文件“/home/bastien/Projects/mean/venv3.5/lib/python3.5/site packages/django/template/base.py”
961返回s