管理员页面中的认证用户模型

0 投票
2 回答
1524 浏览
提问于 2025-04-28 09:20

我开始在Django网站上添加用户认证功能。我创建了一个名为People的类,并通过OneToOneField添加了一个User字段。然后我打开http://localhost:8000/admin页面,尝试添加学生。

但是学生的表单里只有出生日期、学籍号、用户(只有用户名和密码)这些字段,却没有邮箱、名字、姓氏。这是为什么呢?

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     

我查看了这本俄文Django书和这本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)
暂无标签

2 个回答

1

admin.py 文件改成这样:

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

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

admin.site.register(People, PeopleAdmin)
1

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这个时候,我们可以去一些技术论坛,比如StackOverflow,寻求帮助。在这些论坛上,很多人会分享他们的经验和解决方案。

当你在这些论坛上提问时,记得把你的问题描述清楚,包括你遇到的具体情况和你尝试过的解决方法。这样,其他人才能更好地理解你的问题,并给出有效的建议。

同时,查看别人遇到的类似问题和解决方案也是一个很好的学习方式。通过这些讨论,你可以学到很多编程技巧和知识,帮助你更好地解决自己的问题。

总之,技术论坛是一个很好的资源,可以帮助你在编程的路上少走弯路。

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)

撰写回答