Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中使用部分精确匹配进行搜索_Django_Filter_Model - Fatal编程技术网

如何在Django中使用部分精确匹配进行搜索

如何在Django中使用部分精确匹配进行搜索,django,filter,model,Django,Filter,Model,表定义: class Hello(models.Model): name models.CharField(max_length=64, blank=True) 2条记录以db为单位: #1 aaaa-bbbb (cd) #2 aaa-bbbb (cef) 搜索关键字:“aaa bbbb”或“aaa bbbb(c)” 预期结果为#2,但找到2条记录 如何找到#2?而不是icontains使用iexact如下: ret = models.Hello.objects.filter(name

表定义:

class Hello(models.Model):
  name models.CharField(max_length=64, blank=True)
2条记录以db为单位:

#1 aaaa-bbbb (cd)
#2  aaa-bbbb (cef)
搜索关键字:“aaa bbbb”或“aaa bbbb(c)”

预期结果为#2,但找到2条记录


如何找到#2?

而不是
icontains
使用
iexact
如下:

ret = models.Hello.objects.filter(name__iexact='aaa-bbbb')

如果只对一个字段进行筛选,则无需使用
Q
。iexact不会返回任何记录,对吗?已尝试,不会作为返回的0记录工作。icontains返回2条记录。如果模型中的name fileld与您提供的值@user3792705具有精确值,则应返回该值。
iexact
是不区分大小写的匹配项d名称(数据库记录)长度>关键字(用户输入)长度。这就是提出此问题的原因。解决方案不起作用,因为它返回0记录。它找不到任何记录。请再次思考。这可能是模糊匹配问题。#2更可能匹配关键字。提供的2个关键字无法唯一标识#2记录。'aaa BBBBBB(必须提供“ce”来识别关键词。我认为所提问题不正确。
ret = models.Hello.objects.filter(name__iexact='aaa-bbbb')