我想在django-cms(在django管理面板中)为用户添加一些额外的字段。如何以最简单的方式做到这一点?
需要添加两个字段user bio和image。我可以在前端使用它来显示包含所有用户信息的页面吗?
答案 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)
最简单的方法是创建通常称为配置文件模型的东西。因此,对于您的示例,您将创建类似
的内容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。