Django QuerySet 多表联查/条件选取/合并

  • 多表联查
class A(models.Model):
aname = models.CharField()

class B(models.Model):
bname = models.ForeignKey(A)

B.objects.filter(bname__aname__contains='searchtitle') # 是两个 '_' 。
  • 条件选取QuerySet
filter 表示 =
exclude 表示 !=
querySet.distinct() 去重复
__exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
  • 在Django 总用 chain 合并多个QuerySet.
1.合并同一个model的多个QuerySet 的话,是可以采用这种方式的.
QuerySet = QuerySet1 | QuerySet2

2.用chain 来实现,即使是不同的MODEL中查询出来的数据,都可以合并到一个 list 中去.
QuerySet = chain(QuerySet1, QuerySet2)

你可能感兴趣的:(Django)