嗨,我是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()
我想根据Shops
和shop_name, state_name
搜索city_name
。州和城市字段是外键。
对于某些'Shops' state
和city
为空。但是,shop_name
包含search_text
。所以我没有得到那些' Shops
'通过运行此查询。
对此有任何帮助表示赞赏。
答案 0 :(得分:0)
我怀疑当你使用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()