繁体   English   中英

在 Django 管理员中显示对象相关对象参考

[英]Display Objects Related Objects Reference In 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 教师的管理页面(这是-> /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 object 的具体实例。 您可以调整上面的 function 以返回学生列表。 不过,我不确定这在Teacher列表视图页面上看起来是否特别好。 最好把它放在可以轻松放在一排的东西上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM