如何在django-cms中为用户添加一些额外的字段? (在django管理面板中)

时间:2015-08-20 11:07:46

标签: python django django-cms

我想在django-cms(在django管理面板中)为用户添加一些额外的字段。如何以最简单的方式做到这一点?

需要添加两个字段user bio和image。我可以在前端使用它来显示包含所有用户信息的页面吗?

2 个答案:

答案 0 :(得分:0)

来自django docs

像这样创建自定义用户模型

from django.contrib.auth.models import User

class Employee(models.Model):
    user = models.OneToOneField(User)
    department = models.CharField(max_length=100)

像这样更改管理文件

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from my_user_profile_app.models import Employee

# Define an inline admin descriptor for Employee model
# which acts a bit like a singleton
class EmployeeInline(admin.StackedInline):
    model = Employee
    can_delete = False
    verbose_name_plural = 'employee'

# Define a new User admin
class UserAdmin(UserAdmin):
    inlines = (EmployeeInline, )

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

另一种选择是定义自定义用户模型。有关详细信息,请访问https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-example

答案 1 :(得分:0)

取自Django documentation

最简单的方法是创建通常称为配置文件模型的东西。因此,对于您的示例,您将创建类似

的内容
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User)
    bio = models.TextField()
    image = models.ImageField()

然后,要在管理面板中查看此内容,您需要为用户重新注册管理员

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from my_user_profile_app.models import Profile

class UserProfileInline(admin.StackedInline):
    model = Profile
    can_delete = False
    verbose_name_plural = 'profile'

# Define a new User admin
class UserAdmin(UserAdmin):
    inlines = (UserProfileInline, )

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

就在前端显示这一点而言,您可以像使用其他Django模型一样使用User和Profile。