我有两个具有一对多关系的类:
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
列表视图页面上看起来会特别好。可能最好把它放在可以轻松放在一排的东西上。