Django模型中如何按Name和Vendor包含指定词过滤对象?
Django Hat模型多字段模糊筛选实现方法
针对你给出的Hat模型,要筛选**Name字段包含"Green",或Vendor字段包含"Green"**的对象,需要用Django的Q对象实现逻辑“或”查询,同时修正原代码里的语法问题:
原代码的问题
- 查询参数拼写错误:
__contain应为__contains(双下划线结尾加s) - 列表推导式语法错误:不需要
[for ...]的错误格式,直接用list()转换查询集更简洁 - 未处理“或”逻辑,原代码仅筛选了Name字段的情况
正确实现步骤
- 先导入Django的
Q对象和Hat模型:
from django.db.models import Q from .models import Hat
- 编写筛选查询:
# 筛选Name包含"Green" 或者 Vendor包含"Green"的Hat对象 filtered_hats = Hat.objects.filter(Q(Name__contains="Green") | Q(Vendor__contains="Green")) # 如果需要转换成列表格式 hat_list = list(filtered_hats)
补充说明
__contains是区分大小写的模糊匹配,若需忽略大小写(比如匹配"green"、"GREEN"),可替换为__icontainsQ对象用|表示逻辑“或”,逻辑“与”可直接在filter中传多个参数,或用&连接Q对象
内容的提问来源于stack exchange,提问作者Kieran
相关产品推荐
相关产品推荐

