Django admin';是一个';关系

Django admin';是一个';关系,django,django-admin,Django,Django Admin,我在Django方面有很多经验,但我对管理应用程序非常陌生(我们通常根据项目要求将所有内容构建到页面中) 但现在我正在做一个需要一些管理工作的项目,我被困在一个部分 假设我有数据库模型——个人、学生、教员 教师和学生都是一个人(可以说他们继承了这些属性)。如何在管理视图中显示此内容 因此,当有人单击添加学生时,他们只填写学生属性,还填写同一页面上的人物模型所需的属性。这可能吗 这是模型,也有教员,但和学生很相似 class Person(models.Model): last_name

我在Django方面有很多经验,但我对管理应用程序非常陌生(我们通常根据项目要求将所有内容构建到页面中)

但现在我正在做一个需要一些管理工作的项目,我被困在一个部分

假设我有数据库模型——个人、学生、教员

教师和学生都是一个人(可以说他们继承了这些属性)。如何在管理视图中显示此内容

因此,当有人单击添加学生时,他们只填写学生属性,还填写同一页面上的人物模型所需的属性。这可能吗

这是模型,也有教员,但和学生很相似

class Person(models.Model):
    last_name = models.CharField(max_length=50)
    first_name = models.CharField(max_length=50)
    mi = models.CharField(max_length=50)
    phone = models.CharField(max_length=20)
    cell = models.CharField(max_length=20)



class Student(models.Model):
    year = models.CharField(max_length=10)
    stud_id = models.IntegerField()
    person = models.ForeignKey(Person)
    #many to many
任何想法或进一步的问题都会很棒

这就是你的答案! 看看

以下是您需要的代码:

class StudentInline(admin.TabularInline):
    model = Student

class PersonAdmin(admin.ModelAdmin):
    inlines = [
        StudentInline,
    ]

admin.site.register(Person,PersonAdmin)
这是你的答案! 看看

以下是您需要的代码:

class StudentInline(admin.TabularInline):
    model = Student

class PersonAdmin(admin.ModelAdmin):
    inlines = [
        StudentInline,
    ]

admin.site.register(Person,PersonAdmin)

另一种方法是使用Django模型继承,如下所示:

class Person(models.Model):
    last_name = models.CharField(max_length=50)
    first_name = models.CharField(max_length=50)
    mi = models.CharField(max_length=50)
    phone = models.CharField(max_length=20)
    cell = models.CharField(max_length=20)

class Student(Person):
    year = models.CharField(max_length=10)
    stud_id = models.IntegerField()
这样,在学生管理页面中,您将从
Student
Person
获取所有字段,而不使用
内联线。Django还将自动处理两个表之间的ForeignKey


.

另一种方法是使用Django模型继承,如下所示:

class Person(models.Model):
    last_name = models.CharField(max_length=50)
    first_name = models.CharField(max_length=50)
    mi = models.CharField(max_length=50)
    phone = models.CharField(max_length=20)
    cell = models.CharField(max_length=20)

class Student(Person):
    year = models.CharField(max_length=10)
    stud_id = models.IntegerField()
这样,在学生管理页面中,您将从
Student
Person
获取所有字段,而不使用
内联线。Django还将自动处理两个表之间的ForeignKey


.

我试过了,但我得到了一个错误:没有外国钥匙来道歉。我错了!我是用一种不切实际的方式做的!现在就试试吧!很好,这似乎正是我所需要的。我试过了,但我得到了一个错误:没有外国钥匙来道歉。我错了!我是用一种不切实际的方式做的!现在就试试吧!太好了,这正是我所需要的。