django model
- 枚举类型:
model层
projectType = (
(0, u'瀑布项目'),
(1, u'敏捷项目'),
)
type=models.IntegerField(choices=projectType,verbose_name='项目类型', blank=True,null=True)
views层插入
p1.type=1
p1.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 '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
多库使用方案
settings.py
DATABASES = { 'default': {}, 'users': { 'NAME': 'user_data', 'ENGINE': 'django.db.backends.mysql', 'USER': 'mysql_user', 'PASSWORD': 'superS3cret' }, 'customers': { 'NAME': 'customer_data', 'ENGINE': 'django.db.backends.mysql', 'USER': 'mysql_cust', 'PASSWORD': 'veryPriv@ate' } }
同步命令:生成执行命令方法不变,同步数据库需要加上库名
python manage.py migrate --database=users
使用方案
p1.save(using='interface')
testCase.objects.using('interface').all()