Django Поля модели пользователя в AdminModel - PullRequest
0 голосов
/ 01 июня 2011

Моя цель - видеть на сайте администратора только имя пользователя, адрес электронной почты и номер телефона.

Я создал UserProfile, расширив модель User:

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», которое отсутствует в форме.

Ответы [ 3 ]

0 голосов
/ 01 июня 2011

Только потому, что я недавно использовал его, и вы, возможно, тоже этого захотите: Если вы не хотите добавлять встроенного администратора на страницу администрирования «Пользователь» в 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 голосов
/ 01 июня 2011

Вы не можете поместить редактируемые поля из связанной модели в форму администратора без использования встроенных символов.Вы можете показать поле как значение только для чтения: просто добавьте его к readonly_fields.

0 голосов
/ 01 июня 2011

Поля в связанной модели используют два подчеркивания.Не знаю, будет ли это работать в админке.

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