在 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/