django - 在 Django 管理搜索中格式化搜索字符串

标签 django search django-admin

我在我的 Django 模型上使用开箱即用的 Django 管理搜索。我的一个用例是从条形码扫描中查找对象。问题是条形码有一堆前导零,这会阻止查询返回正确的条形码。

我的解决方案是覆盖 admin/search_form.html 模板,并在查询执行前应用自定义模板过滤器来格式化字符串。我写了一个名为 stripLeadingZeroes 的自定义模板过滤器,我可以成功加载它。然后我覆盖 search_form 模板,并在 cl.query 上使用我的自定义模板过滤器....将其更改为 cl.query|stripLeadingZeroes 通过这些编辑,查询将执行, 由于前导零不返回任何结果,然后在查询已执行后应用过滤器。

如何在查询前格式化字符串?

这是我在 search_form 模板中更改的行

<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query|stripLeadingZeroes }}" id="searchbar" />

最佳答案

最简单的方法是按照 django docs 中的建议覆盖 ModelAdmin.get_search_results .

class OccurrenceAdmin(admin.ModelAdmin):
    list_display = ['barcode','description']
    search_fields = ['description']

    def get_search_results(self, request, queryset, search_term):
        try: 
            search_term_as_int = int(search_term)
        except ValueError:
            pass
        else:
            queryset |= self.model.objects.filter(barcode=search_term_as_int)
        return queryset, use_distinct

将搜索字符串转换为整数会自动去除前导零。

关于django - 在 Django 管理搜索中格式化搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052765/

相关文章:

python - 使用 Django Rest Framework 从模型序列化属性(getter 和 setter)的问题

python - 在 Django 的基本模板中设置背景图像

list - grails列表和createCriteria()

java - 搜索jar文件中的文件(包括要查找的jar文件中的Jython类文件)

django - 如何不使用 Django 的管理员登录 View ?

Django 管理员 : update inline based on other inline

python - django用户在密码更改后注销

C++ vector 问题

django - 我可以创建 django 模型,该模型不会保留在数据库中吗?

python - Django ImageField 不会在网页上显示