__包含不适用于数字? (Django + MongoDB)

时间:2017-08-09 20:14:36

标签: python django mongodb mongoose django-queryset

我在模板代码(html)的表格中输入了 type =" text" 。点击"搜索"时,我会从输入中收集值,如下所示:

$(".filterInput").each(function() {
    var column_name = $(this).attr("name")
    filters[column_name] = $(this).val();
});

因此,filters是一个json对象,它包含我想要应用的所有过滤器。

然后,我用ajax调用调用一个视图,然后将变量过滤器发送给它。在那里,我将filters变量转换为一个名为query的对象,该对象具有__contains参数。我使用以下代码(python)执行此操作:

query = {}
for k, v in filters.items():
    if v:
        query[k + '__icontains'] = v

然后我像这样打电话给MongoDB:

result = model.objects.filter(**query).order_by(order_by).skip(page_size*(page-1)).limit(page_size).only(*attr_names)

出于某种原因,对于我的MongoDB中的字符串参数,它工作正常。我可以找到' ca '它会发现像' Ca lamity'或者' al ca 行'。但是,如果我在数字字段中查找 2 ,则只会得到 2 的结果,但不会得到7 2 2 34。如果我寻找 234 ,我会得到 234 但不是5 234 6或 234 56

为什么?可能与我将文字与数字进行比较这一事实有关吗?我该如何解决这个问题?为什么它适用于完全匹配的记录?

0 个答案:

没有答案