如何在Django 1.3用户配置文件中实现管理元字段


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.adminMySiteProfile._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)
有很多关于这个话题的文章,但希望能帮助你。

最新更新