2011-06-01 110 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即可。