我正在为一所学校写一个django项目。我有一个学生模型,一个学校课堂模型和一个注册模型。学校班级通过注册模式与学生建立了ManyToMany关系。我在管理视图中有一个TabularInline,用于显示学生注册的课程(同样,在学校课程中,我可以看到哪些学生在课程中注册)。但是,当我在管理员中查看学生并查看所有已注册的课程时,每个课程都显示为所有可能课程的下拉列表(其中包含大量课程),同样,学校课程管理员视图显示所有课程学生在每次入学的下拉菜单中。
是否可以仅在内联中显示注册,而不是在下拉列表中更改?我仍然希望能够删除它,并在底部添加新的注册,但不能更改现有的注册。拥有相关对象的链接也是很好的(例如,在学生视图中点击学校课程将我带到学校课程信息)
答案 0 :(得分: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