python - Django adminsite 自定义 search_fields 查询

标签 python django django-admin

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

谢谢!

最佳答案

从 django 1.6 开始,您可以通过在 ModelAdmin 子类中定义一个 get_search_results 方法来自定义搜索。

django documentation 中有很好的解释.以下示例是从该文档复制而来的。

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

关于python - Django adminsite 自定义 search_fields 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059390/

相关文章:

django - 显示页面项目在Django分页中的计数

django - 覆盖 django 管理分页以及 url 参数

python - 你好 Django 重命名了我的应用程序的模型

django - Django Admin 中的通用外键

android - 无法在 Kivy 中绘制时钟回调

python - 从 PLY 向解析器的调用者报告解析错误

Python 正则表达式子组捕获

python - 装饰器在它装饰的函数被调用之前运行?

python - 表示套接字连接丢失的错误代码是什么?

python - Django 管理员 "Edit Selection"操作?