2011-06-01 111 views
0

我的目的是在管理員站點上看到用戶名,電子郵件和電話號碼。Django AdminModel的用戶模型字段

我已經通過擴展用戶模型創建用戶配置:

model.py

from django.db import models 
from django.contrib.auth.models import User 


class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    name = models.CharField(max_length=50, null=True,blank=True) 
    address = models.CharField(max_length=50, null=True,blank=True) 
    phone = models.CharField(max_length=20, null=True,blank=True) 
    country = models.CharField(max_length=20, null=True,blank=True) 
    state = models.CharField(max_length=20, null=True,blank=True) 
    zip = models.CharField(max_length=10, null=True,blank=True) 
    code = models.CharField(max_length=40, null=True) 


    def user_email(self): 
     return self.user.email 

admin.py

from myApp.models import UserProfile 
from django.contrib import admin 


class UserProfileAdmin(admin.ModelAdmin): 



    fields = ('name','phone',) 
    list_display = ('name','user_email',) 


admin.site.register(UserProfile, UserProfileAdmin) 

等它的工作list_display,我只能看到我選擇的列,但是當我嘗試去管理站點時將'user_email'(fields =('name','user_email','phone',))添加到字段中:

'UserProfileAdmin.fields'引用表單中缺少的字段'user_email'。

回答

0

相關型號的字段使用兩個下劃線。不知道它是否會在管理員工作。

list_display = ('name','user__email',) 
0

只是因爲我最近使用它,你也許想這也算:如果您wan't到內聯管理員添加到Django的「用戶」管理頁面,你可以做到這一點(至少在Django 1.3 ):

from django.contrib import admin 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

from models import UserProfile 


class UserProfileInlineAdmin(admin.StackedInline): 
    model = UserProfile 

class MyUserAdmin(UserAdmin): 
    inlines = [ UserProfileInlineAdmin ] 

admin.site.unregister(User) 
admin.site.register(User, MyUserAdmin) 
+0

我正要回答同樣的事情,這裏是2010年的一篇文章(保佑谷歌):http://blog.timc3.com/2010/02/18/extending-djangos-user-admin/ – 2011-06-01 07:00:55

+0

好的,謝謝所有的答案,但這不是我想要做的。我不試圖替換Django adminUser我試圖離開Django用戶模型是這樣的,我想在我的項目中有另一種用戶類型,在未來可能會登錄到系統,但現在我只想採取細節併發給他電子郵件,通訊等。 – user625135 2011-06-02 11:43:48

0

不能使用內聯將相關模型的可編輯字段放入管理表單中。您可以將該字段顯示爲只讀值:只需將其添加到readonly_fields即可。