Django不按非英语字母过滤

2024-09-29 01:36:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的数据库中,我有带有斯拉夫字母(śćę等)的对象。它正确地显示在我的数据库、管理面板中,甚至在我调用模板中的对象时也是如此。用户可以通过在文本输入框中提供所需内容来搜索此对象:template.html

<input type="text" class="form-control" placeholder="Model" name="searched_model" id="searched_model" value="">

当我在视图中筛选对象数据库时,howewer:views.py

found_products = ProductBase.objects.filter(Q(model__contains=searched_model).order_by('model')

它过滤并正确显示,直到提供斯拉夫字母。 例如,用户希望对象的模型属性为:ObjectŚĆobject 如果他在我的搜索字段object中写入,它将查找并显示ObjectŚĆobject。 但是如果他只写objectŚ或者甚至Ś,它不会显示任何内容

我的视图将found_products返回模板,并将其显示在表中:template.html

{% for item in found_products %}
...
<td>
    {{item.model}}
</td>

我不知道问题出在哪里。在settings.py中,我有正确的LANGUAGE_CODE = 'pl-pl'

编辑: 我做了一些日志记录,当我显示搜索的短语时,它会显示正确的字符串。 当我在filter之后记录查询集时,它会显示空的查询集。所以问题肯定在于过滤数据

编辑2: 使用其他日志记录方法时,我可以在搜索nieokreś时看到如下所示的SELECT查询:

(0.000) SELECT "zam_produktbase"."id", "zam_produktbase"."ean", "zam_produktbase"."model", "zam_produktbase"."kolor", "zam_produktbase"."symbol", "zam_produktbase"."aktywny", "zam_produktbase"."zam_id" FROM "zam_produktbase" WHERE ("za
m_produktbase"."model" LIKE '%nieokreś%' ESCAPE '\' AND "zam_produktbase"."symbol" LIKE '%%' ESCAPE '\' AND "zam_produktbase"."kolor" LIKE '%%' ESCAPE '\') ORDER BY "zam_produktbase"."model" ASC; args=('%nieokreś%', '%%', '%%')

编辑3: 看起来问题出在我的sqlite数据库中。执行SELECT查询时,未找到非英语字母

编辑4: 这是大写字母的问题,不同的过滤解决了这个问题


Tags: 对象id数据库编辑modelobject字母记录