使用 Q 对象查询
Querying using Q objects
大家好,我是 Django 的新手。我正在尝试实现这样的搜索功能。
query_results = Shops.objects.filter\
(Q(shop_name__icontains=search_text)\
|Q(state__state_name__icontains=search_text)\
|Q(city__city_name__icontains=search_text)).distinct()
我想根据 shop_name, state_name
和 city_name
搜索 Shops
。州和城市字段是外键。
对于某些 'Shops' state
和 city
为空。但是,shop_name
包含 search_text
。所以我没有通过 运行 这个查询得到那些 'Shops
'。
感谢您对此提供任何帮助。
我怀疑当您使用 state__state_name
和 city__city_name
关系时,Django 会对这些表进行 INNER JOIN
。内部联接从结果中删除没有现有关系的商店。
作为此问题的解决方法,您可以尝试如下操作:
states = State.objects.filter(state_name__icontains=search_text)
cities = City.objects.filter(city_name__icontains=search_text)
query_results = Shops.objects.filter(Q(shop_name__icontains=search_text)
|Q(state__in=states)
|Q(city__in=cities)).distinct()
大家好,我是 Django 的新手。我正在尝试实现这样的搜索功能。
query_results = Shops.objects.filter\
(Q(shop_name__icontains=search_text)\
|Q(state__state_name__icontains=search_text)\
|Q(city__city_name__icontains=search_text)).distinct()
我想根据 shop_name, state_name
和 city_name
搜索 Shops
。州和城市字段是外键。
对于某些 'Shops' state
和 city
为空。但是,shop_name
包含 search_text
。所以我没有通过 运行 这个查询得到那些 'Shops
'。
感谢您对此提供任何帮助。
我怀疑当您使用 state__state_name
和 city__city_name
关系时,Django 会对这些表进行 INNER JOIN
。内部联接从结果中删除没有现有关系的商店。
作为此问题的解决方法,您可以尝试如下操作:
states = State.objects.filter(state_name__icontains=search_text)
cities = City.objects.filter(city_name__icontains=search_text)
query_results = Shops.objects.filter(Q(shop_name__icontains=search_text)
|Q(state__in=states)
|Q(city__in=cities)).distinct()