2014-09-05 46 views
2

我有用户配置这种方式定义django:添加用户弹出。缺少字段(名字,姓氏)

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 

该模型在管理注册。当我从UserProfile中添加一个用户时(例如点击用户下拉菜单中的+),我得到一个弹出窗口,只有电子邮件和两个密码对。 有没有办法在同一个弹出窗口中获取first_name和last_name?他们为什么失踪?

注:我使用emailusernames应用程序内的项目

回答

2

尝试在admin/auth/user/add/添加用户。 您将看到弹出式窗体中显示的用户名和密码。 创建用户后,您将被重定向到创建的用户,您可以在其中填写其他信息。

看Django管理模板来源:

{% block form_top %} 
    {% if not is_popup %} 
    <p>{% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}</p> 
    {% else %} 
    <p>{% trans "Enter a username and password." %}</p> 
    {% endif %} 
{% endblock %} 

它告诉我们,在默认情况下,你可以创建对象后添加更多的信息。

这里也有形式: django.contrib.auth.forms.UserChangeFormdjango.contrib.auth.forms.UserCreationForm

它告诉我们的一样。

在django.contrib.auth.admin.UserAdmin通过

add_fieldsets = (
    (None, { 
     'classes': ('wide',), 
     'fields': ('username', 'password1', 'password2', 'first_name', 'last_name')} 
    ), 
) 

更换add_fieldsets给出结果,但它是不好的,因为我们的Django的编辑烃源代码。

所以我admin.py我写了这个:

from django.contrib.auth.admin import UserAdmin 
UserAdmin.add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('username', 'password1', 'password2', 'first_name', 'last_name')} 
     ), 
    ) 

这是一个有点哈克,但这样做的东西很好。