0

我正在为一所学校编写一个 django 程序。我有一个学生模型、一个班级模型和一个招生模型。学校班级通过注册模型与学生建立多对多关系。我在学生的管理视图中有一个 TabularInline,它显示该学生注册了哪些课程(同样,在学校课程中,我可以看到哪些学生注册了该课程)。但是,当我在管理员中查看学生并查看所有已注册的班级时,每个班级都显示为所有可能班级的下拉列表(其中有很多班级),同样,学校班级管理员视图显示所有学生在每个注册的下拉列表中。

是否可以仅在内联中显示注册,而不能在下拉列表中进行更改?我仍然希望能够删除它,并在底部添加新的注册,但不更改现有的注册。有一个指向相关对象的链接也很好(例如,当在学生视图中单击一个学校课程将我带到该学校课程信息)

4

1 回答 1

0

我最终将以下内容用于我的内联;两者都摆脱了每个学生的下拉列表(包含所有学生,这大大减慢了速度),并为每个学生添加了指向管理员的链接。对于反向关系,我有非常相似的代码。

class SchoolClassStudentsInline(admin.TabularInline):
    model = Enrolment

    def student_link(self, instance):
        url = reverse('admin:%s_%s_change' % (
            instance._meta.app_label,  instance.student._meta.module_name),  args=[instance.student.id] )
        return mark_safe(u'<a href="{u}">{s}</a>'.format(u=url,s=instance.student))

    fields = ('student_link',)
    readonly_fields = ('student_link',)
    extra = 0
于 2013-06-10T22:10:51.150 回答