9.1 Django 查询匹配符说明

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")