【问题标题】:why does "Add User" on admin does not show all the fields in admin to add new user in Django?为什么管理员上的“添加用户”没有显示管理员中的所有字段以在 Django 中添加新用户?
【发布时间】:2014-05-08 13:09:54
【问题描述】:

这就是我的管理员现在的样子。

当我单击右侧的Add User 时,我得到一个没有名字、姓氏和电子邮件地址字段的form。但只有username and password,如下

我正在使用Django-registration 注册新用户。我已将UserProfile 附加到UserUserProfile 只有两个字段,PhotoisPublic?

如何让我的admin 包含admin form 中的所有字段(例如名字、姓氏、电子邮件地址)。

编辑: 在这里追溯

ValueError at /admin/auth/user/add/
too many values to unpack
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/auth/user/add/
Django Version: 1.6.2
Exception Type: ValueError
Exception Value:    
too many values to unpack
Exception Location: /Users/Documents/virtualenvs/django/django/lib/python2.7/site-packages/django/contrib/admin/util.py in flatten_fieldsets, line 90
Python Executable:  /Users/Documents/virtualenvs/django/django/bin/python
Python Version: 

【问题讨论】:

    标签: django django-forms django-admin django-registration django-users


    【解决方案1】:

    django.contrib.authUserAdmin specifically overrides the form 用于添加新的User。它与更改表单不同,因为它需要两次询问密码。

    如果您look at the source code for UserAdmin,您会看到可以通过设置add_form 选项来设置自己的创建表单。它应该继承原始的UserCreationForm 以保留密码设置逻辑。例如:

    class MyUserCreationForm(UserCreationForm):
        class Meta(UserCreationForm.Meta):
            fields = ('username', 'first_name', 'last_name')  # etc...
    
    class MyUserAdmin(UserAdmin):
        add_form = MyUserCreationForm
        add_fieldsets = UserAdmin.add_fieldsets + ("More fields", {"fields": ('first_name', 'last_name')},)
    
    # don't forget to register your custom admin class
    admin.site.unregister(UserAdmin)
    admin.site.register(User, MyUserAdmin)
    

    【讨论】:

    • 我在 add_fieldsets 中得到了too many values to unpack,但我不知道为什么会出现?
    • 它应该可以工作。您可以将回溯粘贴到某处吗?
    • add_fieldsets 的值是多少?
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2018-01-05
    • 2018-06-27
    • 2021-03-07
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    相关资源
    最近更新 更多