2017-08-02 35 views
1

我試圖過濾顯示的列表,當我在許多領域使用lupe(圖像波紋管)。 也許文本搜索也會很有趣。如何自定義django管理員搜索結果在很多領域

任何幫助?

django lupe search result example django admin stacked inline example

下面的代碼:

class PresentialModuleCourseInline(NestedStackedInline): 
    """Module Course Presential Stacked Inline""" 
    model = Course.modules.through 
    raw_id_fields = ('module_course',) 
    extra = 1 

    def get_queryset(self, request): 
     return self.model.objects.filter(
      module_course__type_course=ModuleCourse.PRESENTIAL) # Doesn't work 

回答

1

要在ForeignKeyRawIdWidget(LUPE)過濾器,你需要添加一個limit_choices_to小部件,將其添加查詢參數在彈出的頁面過濾像?type_course=online

樣品:

class PresentialModuleCourseInline(NestedStackedInline): 
"""Module Course Presential Stacked Inline""" 
model = Course.modules.through 
extra = 1 
raw_id_fields = ('module_course',) 

def get_formset(self, request, obj=None, **kwargs): 
    form = super().get_formset(request, obj, **kwargs) 
    field = form.form.base_fields['module_course'] 
    field.widget.rel.limit_choices_to =\ 
     {'type_course': ModuleCourse.PRESENTIAL} 
    return form 
1

self.model不是QuerySet或模型,直接使用模型:

class PresentialModuleCourseInline(NestedStackedInline): 
    model = Course.modules.through 
    raw_id_fields = ('module_course',) 
    extra = 1 

    def get_queryset(self, request): 
     return Course.objects.filter(module_course__type_course=ModuleCourse.PRESENTIAL) 

搜索設置search_fields爲您CourseAdmin

class CourseAdmin(admin.ModelAdmin): 
    search_fields = ('title',) # your search fields here 
+0

哪有我在NestedStackedInline中使用它? –

+0

它不依賴於'NestedStackedInline'。如果您爲「課程」管理頁面設置了「search_fields」,它也會顯示在[此屏幕]上(https://i.stack.imgur.com/w3Sjn.png) –

+0

你沒事。唯一的限制是爲此視圖設置查詢集,但對於篩選器和搜索,這也適用。謝謝! –