在 Django Admin 中显示对象相关对象参考
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 Teacher 的管理页面(THIS-> /admin/users/teacher/,不是 THIS -> /admin/users/teacher/1/change/)我想:
- 列出某位老师的所有学生
或
- 显示一位教师的学生总数
我通常会使用类似以下内容向此页面添加字段:
class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher',)
但由于这是一对多关系,而且我正在访问 'many',我迷路了。
谢谢。
如果您想将学生人数添加到教师列表视图,您可以添加一个只读字段(与更改视图一样)
class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher','student_count')
def student_count(self, obj):
return obj.students.count()
这应该可以解决问题。
在这种情况下,obj
指的是每行中 Teacher
对象的特定实例。您可以将上面的函数调整为 return 个学生列表。不过,我不确定这在 Teacher
列表视图页面上看起来是否特别好。可能最好将它放在可以轻松放在一排的东西上。
我有两个 类 具有一对多关系:
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/,不是 THIS -> /admin/users/teacher/1/change/)我想:
- 列出某位老师的所有学生
或
- 显示一位教师的学生总数
我通常会使用类似以下内容向此页面添加字段:
class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher',)
但由于这是一对多关系,而且我正在访问 'many',我迷路了。
谢谢。
如果您想将学生人数添加到教师列表视图,您可以添加一个只读字段(与更改视图一样)
class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher','student_count')
def student_count(self, obj):
return obj.students.count()
这应该可以解决问题。
在这种情况下,obj
指的是每行中 Teacher
对象的特定实例。您可以将上面的函数调整为 return 个学生列表。不过,我不确定这在 Teacher
列表视图页面上看起来是否特别好。可能最好将它放在可以轻松放在一排的东西上。