【发布时间】:2015-11-13 23:58:49
【问题描述】:
我想在 django-cms(在 django 管理面板中)中为用户添加一些额外的字段。如何以最简单的方式做到这一点?
需要添加两个字段 user bio 和 image。我可以在前端使用它来显示包含所有用户信息的页面吗?
【问题讨论】:
标签: python django django-cms
我想在 django-cms(在 django 管理面板中)中为用户添加一些额外的字段。如何以最简单的方式做到这一点?
需要添加两个字段 user bio 和 image。我可以在前端使用它来显示包含所有用户信息的页面吗?
【问题讨论】:
标签: python django django-cms
来自 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
【讨论】:
最简单的方法是创建通常称为配置文件模型的东西。因此,对于您的示例,您将创建类似
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。
【讨论】: