枚举类型:
model层
projectType = ( (0, u'瀑布项目'), (1, u'敏捷项目'),)type=models.IntegerField(choices=projectType,verbose_name='项目类型', blank=True,null=True)views层插入
p1.type=1p1.save()template层调用 直接显示int
{{ project.type }}显示要显示的内容
{{ project.get_type_display }}
filter当天之内的时间
from django.utils.timezone import now, timedelta
start = now().date() end = start + timedelta(days=1)
time.objects.filter(createtime__range=(start, end))
django 用户和组的互查
一、查询user表中全部的用户
User.objects.filter().all() #获取一个用户对象 [each.first_name for each in User.objects.filter().all()] #通过列表解析取出需要的字段,first_name 可以换成其他user表中的字段
二、查询登录用户
request.user.username #查询登录用户名
三、登录用户查询该用户所在组
request.user.groups.all()
四、查询全部的组
Group.objects.all()
五、查询组的其他信息
[each.name for each in Group.objects.all()] # 查询组的信息 name 对应表中的字段
六、查询指定组全部的用户
# 查询指定组中的用户,在filter中可以 Group.objects.get(name="XXX").user_set.filter().all() # 通过列表解析可以遍历出该用户表中的字段 [each.username for each in Group.objects.get(name="前端组").user_set.filter().all()]
七、根据用户查询指定的组
User.objects.get(username="user").groups.all() #返回的是对象 User.objects.get(username="user").groups.values().all() #返回的是字典
注释
print User.objects.filter().all() print [each.first_name for each in User.objects.filter().all()] print request.user.groups.all() print [each.name for each in Group.objects.all()] print Group.objects.get(name="前端组").user_set.filter().all() print [each.username for each in Group.objects.get(name="前端组").user_set.filter().all()] print User.objects.get(username="zhangchao").groups.all() print User.objects.get(username="zhangchao").groups.values().all()
条件选取querySet的时候,filter表示=,exclude表示!=。
filter的and和or用法
or
or tasklist.filter(Q(state='setup')|Q(state='developing')|Q(state='testing')|Q(state='ready')|Q(state='released'))
and
(Q(state='finish'),Q(releasedDate__lte=start))
querySet.distinct() 去重复
排序
request.user.groups.filter(id__in=groupDict.keys()).order_by("-id")
__exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '