在我的数据库中,我有带有斯拉夫字母(śćę等)的对象。即使我在模板中调用对象,它也可以正确显示在数据库,管理面板中。用户可以通过在文本输入框中提供所需的内容来搜索该对象:template.html
<input type="text" class="form-control" placeholder="Model" name="searched_model" id="searched_model" value="">
当我在视图中过滤对象数据库时,请执行以下操作: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
之后记录查询集时,它显示为空查询集。因此,问题肯定出在过滤数据上。
EDIT2:
使用其他日志记录方法时,在搜索SELECT
时可以看到如下的nieokreś
查询:
(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ś%', '%%', '%%')
EDIT3: 看来问题出在我的sqlite数据库中。进行SELECT查询时,找不到非英文字母。
EDIT4: 这是大写字母的问题,不同的过滤器解决了这个问题。