【问题标题】:Django Admin: how to display additional fields for users?Django Admin:如何为用户显示附加字段?
【发布时间】:2012-05-12 10:02:45
【问题描述】:

使用 Django“创建用户配置文件的方法”页面上的示例为用户创建一些附加字段,该示例运行良好,但我遇到的问题是,当您想将这些新数据插入用户时,因为我从管理员那里看到而我找到的另一个解决方案不是来自表单,但我实际上更喜欢它来自 Django admin 的想法,以保持管理状态。

因此向用户模型插入了额外的字段:

## User Additional Fields
User.add_to_class ('nit' models.IntegerField (max_length = 20, null = True))
User.add_to_class ('company', models.CharField (max_length = 30, null = True))
User.add_to_class ('address', models.CharField (max_length = 30, null = True))
User.add_to_class ('city', models.CharField (max_length = 10, null = True))
User.add_to_class ('phone', models.CharField (max_length = 10, null = True))
User.add_to_class ('Mobile', models.CharField (max_length = 10, null = True))

另一方面,像我这样的同一用户中的“权限”功能将其删除,因为平台不需要此信息,并且附加字段保留在“个人信息”中,所有这些都是管理员:

个人信息

名字:

姓氏:

电子邮件地址:

尼特:

公司:

地址:

城市:

电话:

手机:

您能帮我看看如何在 Django1.4 管理员中获取这些新字段吗?我需要帮助!

【问题讨论】:

    标签: django user-interface django-admin django-templates


    【解决方案1】:

    我认为您想要做的是与用户一起在管理员中编辑您的 UserProfile?如果是这样,请尝试将以下内容放入您定义了 UserProfile 的任何应用程序的 admin.py 文件中:

    from django.forms.models import inlineformset_factory
    from django.contrib import admin
    from django.contrib.auth.models import User
    from django.contrib.auth.admin import UserAdmin
    
    from myapp.models import UserProfile
    
    
    class UserProfileFormSet(inlineformset_factory(User, UserProfile)):
        def __init__(self, *args, **kwargs):
            super(UserProfileFormSet, self).__init__(*args, **kwargs)
            self.can_delete = False
    
    class UserProfileInline(admin.StackedInline):
        model = UserProfile
        fk_name = 'user'
        formset = UserProfileFormSet
    
    class MyUserAdmin(UserAdmin):
        inlines = [UserProfileInline]
    
    
    # Re-register altered UserAdmin
    admin.site.unregister(User)
    admin.site.register(User, MyUserAdmin)
    

    【讨论】:

    • 对于OneToOneField,不需要在InlineModelAdmin中明确指定max_num=1extra=0
    • 看我是否理解,如果您为管理员创建模型,我会在脑海中创建一个名为 admin.py 的文件(我已经创建),但是我有问题,首先我做了将数据库中的字段扩展为不创建 UserProfile 模型的默认用户,这是另一种方法吗?我突然不得不这样做。这个想法是让在管理员中对用户执行的 add_to_class 可见。
    • 我不太确定你在说什么抱歉,但如果你正在考虑扩展 User 模型而不是创建 UserProfile 类,我会说你是在自找麻烦.我已经看到它完成了,它引起了各种各样的问题。您可以在此处阅读有关 UserProfiles 的信息:docs.djangoproject.com/en/dev/topics/auth/…
    猜你喜欢
    • 2021-06-01
    • 2015-01-10
    • 2011-08-05
    • 1970-01-01
    • 2023-01-03
    • 2018-06-17
    • 2021-04-28
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多