【问题标题】:Removing drop-downs from inlines in django admin从 django admin 的内联中删除下拉菜单
【发布时间】:2013-06-03 06:32:06
【问题描述】:

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

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

【问题讨论】:

标签: django django-admin


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多