0

嗨,我是 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_nameand进行搜索city_name。州和城市字段是外键。对于一些'Shops' stateandcity是空的。但是,shop_name包含search_text. 所以我没有Shops通过运行这个查询得到那些''。对此的任何帮助表示赞赏。

4

1 回答 1

0

我怀疑当您使用Django 与这些表建立的关系state__state_name时。内连接从结果中删除不存在关系的商店。city__city_nameINNER 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()
于 2015-03-11T14:32:42.597 回答