2014-10-19 81 views
0

我开始将用户用户验证添加到django网站。并通过OneToOneField添加User字段的人员。我去http: //localhost:8000/admin页面并尝试添加学生,管理员页面的验证用户模型

但学生只有Born, Record book, User(which have only Имя пользователя, Пароль)。但没有email, first_name, lastname。为什么?

models.py:

class People(models.Model): 
    user = models.OneToOneField(User) 
    born = models.DateField() # born date 

    class Meta: 
     abstract = True 

class Student(People): # Ingeritance 
    record_book = models.CharField(max_length=75) # students record book 
    group = models.ForeignKey(Group) 

    def __unicode__(self): 
     return "Student:" + self.user.name + ' ' + self.user.surname 

    def get_absolute_url(self): 
     return "/student/%i/" % self.id  

我看到这个rus django booktango with django

admin.py:

# -*- coding: utf-8 -*- 
from django.contrib import admin 
from models import Professor, Student, Subject, Group, PageLaboratoryWork, MadeLaboratoryWork, LabComment 

admin.site.register(Professor) 
admin.site.register(Student) 
admin.site.register(Subject) 
admin.site.register(Group) 
admin.site.register(PageLaboratoryWork) 
admin.site.register(MadeLaboratoryWork) 
admin.site.register(LabComment) 
+0

你如何检查这个?您可以通过'user.email'访问'email,first_name,...','Student'模型的'user.first_name'。 – 2014-10-19 12:10:45

+0

我无法填写管理页面 – Denis 2014-10-19 12:15:35

+0

给你的'admin.py'。 – 2014-10-19 12:29:05

回答

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

admin.site.register(Student) 

admin.site.unregister(User) 

class MyUserAdmin(UserAdmin): 
    add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('username', 'email', 'first_name', 'last_name', 'password1', 'password2')} 
     ), 
    ) 

admin.site.register(User, MyUserAdmin) 
1

变化admin.py这样的:

class UserInline(admin.StackedInline): 
    model = User 
    extra = 1 

class PeopleAdmin(admin.ModelAdmin): 
    inlines = [UserInline] 

admin.site.register(People, PeopleAdmin) 
+0

然后./manage RUNSERVER 错误: <类 'lab.admin.UserInline'>:(admin.E202) 'auth.User' 没有ForeignKey的为 'lab.Student'。 – Denis 2014-10-19 18:12:24

+0

@Denis检查我的编辑。将其用于'People'模型。也许帮助你。 'AdminInline'不适用于继承模型。 – 2014-10-19 18:32:46

+0

无法向管理员注册文件“/home/denis/WebDir/laboratory1/env/local/lib/python2.7/site-packages/django/contrib/admin/sites.py”,行81,注册号为 '。 “ %model .__ name__) django.core.exceptions.ImproperlyConfigured:模型People是抽象的,所以它不能用admin注册。 – Denis 2014-10-19 20:55:00