HStore Value_uu包含Django 1.8中的搜索
我在Django.users上问过这个问题,但没有回应。我最近升级到了Django 1.8,以利用对HStore字段的本机支持(不使用Django HStore),但我遇到了这个问题。我不确定这是否是一个bug,或者是否有一个未记录的方法来实现这一点 我试图找到给定模型中的所有对象,其HStore字段中的“值”包含字符。但是,只有在搜索项与其值之间存在精确匹配时,“\uuuu contains”搜索才有效 从我自己的应用程序中(我删除了一些queryset结果,以使其更易于阅读)HStore Value_uu包含Django 1.8中的搜索,django,django-queryset,hstore,django-1.8,Django,Django Queryset,Hstore,Django 1.8,我在Django.users上问过这个问题,但没有回应。我最近升级到了Django 1.8,以利用对HStore字段的本机支持(不使用Django HStore),但我遇到了这个问题。我不确定这是否是一个bug,或者是否有一个未记录的方法来实现这一点 我试图找到给定模型中的所有对象,其HStore字段中的“值”包含字符。但是,只有在搜索项与其值之间存在精确匹配时,“\uuuu contains”搜索才有效 从我自己的应用程序中(我删除了一些queryset结果,以使其更易于阅读) >>查询1 [
>>查询1
[,'…(其余元素被截断)…]
>>>query1.filter(多光泽值包含=[“此”])
[]
>>>query1.filter(多光泽值包含=[“此(f)”)
[,'…(其余元素被截断)…]
>>>query1.filter(多重光泽值包含=[“His”])
[,'…(其余元素被截断)…]
>>>query1.filter(多光泽值包含=[“Hi”])
[]
预期的结果是,查询将返回其“multigloss”值包含字符串的任何数据,而不仅仅是那些完全相同的字符串
如果没有包含整个单词“collie”(我没有测试,这是一个假设的结果),中的示例也应该失败:
>Dog.objects.create(name='Rufus',data={'bride':'labrador'})
>>>创建(name='Meg',data={'bride':'collie','owner':'Bob'})
>>>Dog.objects.filter(数据值包含=['collie']))
[]
>>>#假设的例子!
>>>Dog.objects.filter(数据\值\包含=['coll'])
[]
>>>#应该已经回来了[狗:梅格]
是否有一种方法可以执行我在这里尝试执行的查询,或者我是否发现了一个bug
>>> query1
[<LanguageDatum: \xf0i, This (m), And, >, <LanguageDatum: hadi, This (f), AfgA, >, <LanguageDatum: -e, His, ArBah, >, '...(remaining elements truncated)...']
>>> query1.filter(multigloss__values__contains=["This"])
[]
>>> query1.filter(multigloss__values__contains=["This (f)"])
[<LanguageDatum: hadi, This (f), AfgA, >, <LanguageDatum: \xf0i, This (f), ArAnz, >, '...(remaining elements truncated)...']
>>> query1.filter(multigloss__values__contains=["His"])
[<LanguageDatum: -e, His, ArBah, >, <LanguageDatum: -eh, His, ArBah, >, <LanguageDatum: -hu, His, Chd, >, <LanguageDatum: -u, His, Chd, > '...(remaining elements truncated)...']
>>> query1.filter(multigloss__values__contains=["Hi"])
[]
>>> Dog.objects.create(name='Rufus', data={'breed': 'labrador'})
>>> Dog.objects.create(name='Meg', data={'breed': 'collie', 'owner': 'Bob'})
>>> Dog.objects.filter(data__values__contains=['collie'])
[<Dog: Meg>]
>>>#Hypothesized example!
>>> Dog.objects.filter(data__values__contains=['coll'])
[]
>>>#Should have returned [Dog: Meg]