【问题标题】:Display Objects Related Objects Reference In Django Admin在 Django Admin 中显示对象相关对象参考
【发布时间】:2023-03-03 00:16:01
【问题描述】:

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

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 教师的管理页面(THIS-> /admin/users/teacher/ ,NOT THIS -> /admin/users/teacher/1/change/)我想:

  • 列出所有教师的学生

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

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

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

但由于这是一对多的关系,并且我正在访问“多”,所以我迷路了。

谢谢。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

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

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

    这应该可以解决问题。

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

    【讨论】:

    • 这比完美更完美。谢谢
    • :) 很高兴它有帮助
    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2017-03-28
    • 2011-09-19
    相关资源
    最近更新 更多