2011-09-06 49 views
0
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已設置。如何在Django 1.3用戶配置文件中實現管理元字段?

回答

1

有幾種方法可以使您的MySiteProfile在管理中顯示。一種是簡單地用管理員註冊您的模型,它會顯示在它駐留在應用程序的名稱

另一種方法是從管理員註銷了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) 

有在這個話題上有不少文章,但希望能幫助你。

+0

有很多障礙;我不必註冊自己的MySiteProfileAdmin,而是使用InlineAdmin for MySiteProfile重新註冊UserAdmin; http://stackoverflow.com/questions/6183132/django-inlinemodeladmin-extra-option-not-working - > http://stackoverflow.com/questions/3400641/how-do-i-inline-edit-a-django -user-profile-in-the-admin-interface - >目前,它工作正常.. –

相關問題