2024-05-01 07:40:23 发布
网友
我知道在Django中,我可以使用__icontains查询数据库使用LIKE
__icontains
LIKE
name = "joe" Q(name__icontains=name)
但如果我有一份清单:
name_list = ["joe", "klare"]
如何编写QuerySet语法,使名称包含“joe”或“klare”
通过创建多个条件:
filters = Q() for name in name_list: filters |= Q(name__icontains=name) queryset.filter(filters)
如果定期使用不同属性进行此类查询,请为此类操作创建通用函数
def generate_property_in_list_query(property_name, list_items): query = None for item in list_items: filter_query = Q(**{"{}__icontains".format(property_name): item}) query = filter_query if not query else query | filter_query return query
现在,您可以为namelike创建查询
generate_property_in_list_query("name", ["joe", "klare"])
模型过滤器操作将是
Model.objects.filter(generate_property_in_list_query("name", ["joe", "klare"]))
如果我们想搜索其他属性,只需更改属性名称
通过创建多个条件:
如果定期使用不同属性进行此类查询,请为此类操作创建通用函数
现在,您可以为namelike创建查询
模型过滤器操作将是
如果我们想搜索其他属性,只需更改属性名称
相关问题 更多 >
编程相关推荐