python - django:添加用户弹出窗口。缺少字段(名字、姓氏)

标签 python django

我以这种方式定义了 UserProfile

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

此模型已在管理员中注册。当我从 UserProfile 添加用户时(例如,单击用户下拉列表附近的 +),我收到一个弹出窗口,其中只有电子邮件和两个密码对。 有没有办法在同一个弹出窗口中获取 first_name 和 last_name?他们为什么不见了?

注意:我在项目中使用 emailusernames 应用程序

最佳答案

尝试在 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

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

给出了结果,但是不好,因为我们在编辑django的源代码。

所以在我的 admin.py 中我写了这个:

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

有点hacky,但是做的很好。

关于python - django:添加用户弹出窗口。缺少字段(名字、姓氏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681272/

相关文章:

python - 任何人都可以解释这种准确性和我的网络丢失的行为吗?

django - 我怎样才能在 forloop.counter 上使用 Django 模板标签大于?

python - 模型实例上的 Django 引用管理器和相关管理器

python - 如何使用谷歌翻译将乌尔都语单词音译为罗马乌尔都语

python - python 中稳健且完整的扩展或 RRULE

python - 循环具有不同名称的列

python - 将样式表与 django-widget-tweaks 一起使用?

python - 如何在 Python/Django 中将此持续时间转换为天/小时/分钟/秒?

python - 内容未渲染错误: The response content must be rendered before it can be iterated over

python - 我想在 python 代码中添加 ssl 证书,但我不知道如何在代码中添加它