Django adminsite自定义search_fields查询

dAr*_*nac 16 python django django-admin

在django管理员中,您可以为ModelAdmin设置search_fields,以便能够搜索那里给出的属性.我的模型类有一个属性不是真正的模型属性,意味着它不在数据库表中.该属性涉及另一个数据库表,该表不通过关系绑定到当前模型.但我希望能够搜索它,所以我必须以某种方式自定义管理站点创建的查询,以便在搜索字段填满时进行过滤 - 这是否可能,如果,如何?我可以查询我的自定义属性的数据库表,然后返回适合搜索的模型类的ID.然后,正如我所说,这必须流入管理站点搜索查询.

谢谢!

luc*_*luc 22

从django 1.6开始,您可以通过get_search_resultsModelAdmin子类中定义方法来自定义搜索.

django文档中对此进行了详细解释.以下示例是从此doc复制的.

class PersonAdmin(admin.ModelAdmin):
    list_display = ('name', 'age')
    search_fields = ('name',)

    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super(PersonAdmin, self).get_search_results(request, queryset, search_term)
        try:
            search_term_as_int = int(search_term)
            queryset |= self.model.objects.filter(age=search_term_as_int)
        except:
            pass
        return queryset, use_distinct
Run Code Online (Sandbox Code Playgroud)


sha*_*pan -2

这可能会有所帮助

search_fields = ['foreign_key__lated_fieldname']

http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields

  • 嗯,正如我所说,模型类不与其他模型绑定,因此没有外键。因此这是行不通的。 (4认同)