【问题标题】:Querying using Q objects使用 Q 对象查询
【发布时间】:2015-05-13 09:32:12
【问题描述】:

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

【问题讨论】:

  • 你能发布你的模型定义吗?

标签: django django-models django-queryset django-q


【解决方案1】:

我怀疑当您使用state__state_namecity__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()

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 2021-09-15
    • 2013-12-11
    • 2015-06-23
    • 2012-03-24
    • 2010-12-27
    • 2014-02-06
    • 2015-07-15
    相关资源
    最近更新 更多