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

posted @ 2017-09-04 15:12  XiaO天  阅读(151)  评论(0编辑  收藏  举报