如何在django admin inlines

时间:2017-02-19 10:41:48

标签: django filter inlines

class StudentsTeacher(admin.TabularInline):
    form = StudentsTeacher
    model = StudentsTeacher

class Teacher_Admin(admin.ModelAdmin):
    inlines = (StudentsTeacher,)

我想在StudentsTeacher中添加一个带有过滤器的查询集,但它不起作用,内联始终全部显示。

2 个答案:

答案 0 :(得分:0)

使用get_queryset()方法,您可以覆盖查询集

class Teacher_Admin(admin.TabularInline):
    def get_queryset(self, request):
        qs = super(Teacher_Admin, self).get_queryset(request)
        return qs.filter(<filtering>)

您可以在django docs

中详细了解相关信息

答案 1 :(得分:0)

您还可以在表单集中为内联定义自定义查询集

    class StudentTeacherFormset(BaseInlineFormSet):
        self.queryset = StudentsTeacher.objects.filter(<your custom filter>)

    class StudentsTeacher(admin.TabularInline):
        form = StudentsTeacher
        model = StudentsTeacher
        formset = StudentTeacherFormset

    class Teacher_Admin(admin.ModelAdmin):
        inlines = (StudentsTeacher,)

Formset可用于为Django内联生成自定义查询集,而不用在父级admin中呈现子表的所有对象。

但是,如果有人找到解决方案,以便在Django内联中提供类似于列表过滤器的过滤器,请告诉我。