如何使 Django 查询集忽略空白

eac*_*one 4 django

有一些存储在数据库中。列数据可以再包含一个空格,如下所示。

Printer
-----------------------------------
   No   |  name      |   data   
-----------------------------------
    1   | 3D Printer | 1
    2   | 3d printer | 21
    3   | 3dPrinter  | 3
Run Code Online (Sandbox Code Playgroud)

我想选择所有的“3d 打印机”。

告诉我这样做的方法。

Anu*_*dra 6

你可以这样做:

Printer.objects.extra(where=["LOWER(REPLACE(name,' ','')) = '3dprinter'"])
Run Code Online (Sandbox Code Playgroud)

上面的查询将首先删除名称中的任何空格,然后将其变为小写,然后与3dprinter进行比较

由于名称中的所有空格都被删除,包括3d之后的空格,我们需要将名称与仅3dprinter进行比较


Dhe*_*dra 1

我猜 django 不支持REPLACE字符串的 SQL 选项。但你可以使用原始sql。这是关于相同内容的 Django 文档:https ://docs.djangoproject.com/en/1.8/topics/db/sql/

这是忽略空格的原始 SQL 查询忽略空格的查询

在我看来,您应该在表中添加另一列,slug-name该列将存储不带空格的名称。这样你就可以在你的桌面上轻松使用 Django ORM。