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

时间:2011-09-06 04:27:31

标签: django

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。

1 个答案:

答案 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)

关于这个主题有很多文章,但希望能帮到你。