在 Django Admin 中显示对象相关对象参考



我有两个具有一对多关系的类:

class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name='students', default=None, null=True)

在 Django Teacher 的管理员页面(THIS->/admin/users/teacher/,不是这个 ->/admin/users/teacher/1/change/(中,我想:

  • 列出教师的所有学生

  • 显示教师拥有的学生总数

我通常会使用以下内容向此页面添加字段:

class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher',)

但由于这是一种一对多的关系,并且我访问了"许多",所以我迷失了。

谢谢。

如果要将学生人数添加到教师列表视图,可以添加只读字段(与更改视图相同(

class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher','student_count')
def student_count(self, obj):
return obj.students.count()

这应该可以解决问题。

在这种情况下,obj是指每行中Teacher对象的特定实例。您可以调整上面的函数,以返回学生列表。不过,我不确定这在Teacher列表视图页面上看起来会特别好。可能最好把它放在可以轻松放在一排的东西上。

最新更新