有很多关于这个话题的文章,但希望能帮助你。
from django.db import models
from django.contrib.auth.models import User
class MySiteProfile(models.Model):
# This is the only required field
user = models.ForeignKey(User, unique=True)
# The rest is completely up to you...
favorite_band = models.CharField(max_length=100, blank=True)
favorite_cheese = models.CharField(max_length=100, blank=True)
lucky_number = models.IntegerField()
问题是User._meta.admin
和MySiteProfile._meta.admin
都返回NoneType。我已经放弃并重新创建了整个数据库,但没有新的字段出现在管理面板;设置AUTH_PROFILE_MODULE
有几种方法可以使您的MySiteProfile显示在管理中。一种方法是简单地向管理员注册你的模型,它将显示在它所在的应用程序名称下。
另一种方法是从admin中注销贡献用户,并加载您的用户:
#admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from my_app.models import MySiteProfile
class MySiteProfileAdmin(UserAdmin):
def __init__(self,*args,**kwargs):
super(MySiteProfileAdmin).__init__(*args,**kwargs)
fields = list(UserAdmin.fieldsets[0][1]['fields'])
fields.append('favorite_band')
fields.append('favorite_cheese')
fields.append('lucky_number')
UserAdmin.fieldsets[0][1]['fields']=fields
admin.site.unregister(User)
admin.site.register(MySiteProfile, MySiteProfileAdmin)