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。
答案 0 :(得分:1)
有几种方法可以让您的MySiteProfile显示在管理员中。一种是简单地向管理员注册您的模型,它将显示在它所在的应用名称下。
另一种方法是从admin注销contrib用户,而不是加载你的:
#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)
关于这个主题有很多文章,但希望能帮到你。