我有两个具有一对多关系的课程:
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的Admin页面(此-> / admin / users / teacher /,而不是此-> / admin / users / teacher / 1 / change /)中,我想选择其中一个:
或
我通常会使用类似以下内容的字段添加到此页面:
class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher',)
但是因为这是一对多的关系,并且我正在访问“很多”,所以我迷路了。
谢谢。
答案 0 :(得分:0)
如果您想在教师列表视图中增加学生人数,则可以添加一个只读字段(与更改视图相同)
class StudentAdmin(admin.ModelAdmin):
list_display = ('user', 'teacher','student_count')
def student_count(self, obj):
return obj.students.count()
这应该可以解决问题。
在这种情况下,obj
指每一行中Teacher
对象的特定实例。您可以调整上面的功能,以返回学生列表。我不确定Teacher
列表视图页面上的显示效果是否特别好。最好将其保存在容易排成一排的东西上。