django中使用的匹配符和说明
__exact: 精确等于,如SQL的like'开发'。 例: filter(job__exact='开发')
__iexact: 精确等于并忽略大小写。 例: filter(job__iexact='开发')
__contains: 模糊匹配,如SQL的like'%荣耀%'。 例: filter(job__contains='开发')
__icontains: 模糊匹配,忽略大小写。 例: filter(job__icontains='开发')
__gt: 大于。 例: filter(job__gt=5)
__gte: 大于等于。 例: filter(job__gte=5)
__lt: 小于。 例: filter(job__lt=5)
__lte: 小于等于。 例: filter(job__lte=5)
__in: 判断是否在列表内。 例: filter(job__in=[1,2,3])
__startswith: 以。。。开头。 例: filter(job__startswith='开发')
__istartswith: 以。。。开头并忽略大小写。 filter(job__istartswith='开发')
__endswith: 以。。。结尾。 filter(job__endswith='开发')
__iendswith: 以。。。结尾并忽略大小写。 filter(job__iendswith='开发')
__range: 在。。。范围内。 filter(job__range='开发')
__year: 日期字段的年份。 filter(job__year='2018')
__month: 日期字段的月份。 filter(job__month='12')
__day: 日期字段的天数。 例: filter(job__day=30)
__isnull: 判断是否为空。 例: filter(job__isnull=True/False)
示例:
# 通过get传参查询
data_dict = {}
search_data = req.GET.get('name', "") # 有值拿值,没值为空
if search_data:
data_dict["name__contains"] = search_data
# 增加分页
queryset = Employee.objects.filter(**data_dict).order_by("id")
# queryset2 = Employee.objects.filter(name__contains="tang").order_by("id")