zoukankan      html  css  js  c++  java
  • Django Models相关

    Models的相关知识
    1. AutoField:自增整数类型。根据 ID 自增长的 Int字段
    
    2. IntegerField:整数类型
    
    3. BigIntegerField:大整数类型。用于数值较大时,类似于IntegerField
    
    4. SmallIntegerField:小整数类型。数值的取值范围较小,受限于数据库的限制
    
    5. BooleanField:布尔值(true/false)类型。
    
    6. CharField:字符串类型。
    
    7. CommaSeparatedInterField:存放以逗号间隔的整数序列
    
    8. DateField:日期类型。datetime.date 实例
    
    9. DateTimeField:日期类型。datetime.datetime 实例
    
    10. EmailField:字符串类型(正则表达式邮箱)
    
    11. FileField:文件类型。
    
    12. FilePathField:文件类型。某个目录中的所有文件名集合
    
    13. FloatField:浮点数类型
    
    14. ImageField:图片文件类型
    
    15. IPAddressField:IP地址类型。字符串形式(比如 "192.0.2.30")表示
    
    16. GenericIPAddressField:IP地址类型。字符串形式(比如 "192.0.2.30"或者"2a02:42fe::4")表示
    
    17. NullBooleanField:类似于BooleanField。允许值为null
    
    18. PositiveIntegerField:和 IntegerField 相似。字段值必须是非负数
    
    19. PositiveSmallIntegerField:和 PositiveIntegerField 类似,但数值的取值范围较小,受限于数据库设置。
    
    20. SlugField:短标签。主要用于基于其他字段的值来自动填充 Slug 字段
    
    21. TextField:和 Charfield 类似。用于存储文本。
    
    22. TimeField:时间类型。datetime.time 实例
    
    23. URLField:URL类型。
    
    24. UUIDField:唯一标识类型。
    
    25. BinaryField:二进制类型
    
    26. Decimal:十进制小数类型
    
    27. ForeignKey:外键类型
    
    28. ManyToManyField:多对多类型
    
    29. OneToOneField:一对一类型

    字段选项

    1. null=True   数据库中字段是否可以为空
    
    2. blank=True    django的 Admin 中添加数据时是否可允许空值
    
    3. primary_key = False    主键,对AutoField设置主键后,就会代替原来的自增 id 列
    
    4. auto_now 和 auto_now_add
      auto_now   自动创建---无论添加或修改,都是当前操作的时间
      auto_now_add  自动创建---永远是创建时的时间
    
    5. choices
    GENDER_CHOICE = (
            (u'M', u'Male'),
            (u'F', u'Female'),
        )
    gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
    
    6. max_length
    
    7. default  默认值
    
    8. verbose_name  Admin中字段的显示名称
    
    9. name|db_column  数据库中的字段名称
    
    10. unique=True  不允许重复
    
    11. db_index = True  数据库索引
    
    12. editable=True  在Admin里是否可编辑
    
    13. error_messages=None  错误提示
    
    14. auto_created=False  自动创建
    
    15. help_text  在Admin中提示帮助信息
    
    16. validators=[]   自定义错误验证(列表类型)
    
    17. upload-to 上传到哪个位置,更多与image,filepath配合使用

    values() 和、vlue_list() 与 all()

    
    
    # User为Models类

    .all()是取得所有列的数据,可以加.values()取出某一列,每一个元素为一个字典:
    obj
    = model.User.objects.filter(name='alex').values('id','email')
    # 相当于SQL语句: select id, email from user where name='alex'
    queryset -> python,Django的类 [{'id':1},{'id': 2},] values_list(),获取到的元素为一个个元组,也可以加多个参数来获取多列:
    obj
    = model.User.objects.filter(name='alex').value_list('id','email')
    相当于SQL语句: select id, email from user where name='alex'
    queryset -> python,Django的类 [(1,'1@qq.com'),(2,'alex@11.com'),]

    表基本操作

    # 增
    models.User.objects.create(id='xx', name='xx')  增加一条数据,可以接受字典类型数据 **kwargs
    obj = models.User(id='xx', name='xx')
    obj.save()
     
    # 查
    models.User.objects.get(id=123)         # 获取单条数据,不存在则报错(不建议)
    models.User.objects.all()               # 获取全部数据
    models.User.objects.filter(name='seven') # 获取指定条件的数据
     
    # 删
    models.User.objects.filter(name='seven').delete() # 删除指定条件的数据
     
    # 改
    models.User.objects.filter(name='seven').update(gender='0')  # 将指定条件的数据更新,均支持 **kwargs
    obj = models.User.objects.get(id=1)
    obj.name = 'Delav'

    双划线操作

    用法: # 字段名称 + __ + 关键字

    __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
    # 获取个数
    models.User.objects.filter(name='seven').count()
     
    # 大于,小于
    models.User.objects.filter(id__gt=1)              # 获取id大于1的值
    models.User.objects.filter(id__lt=10)             # 获取id小于10的值
    models.User.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值
     
    # in
    models.User.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
    models.User.objects.exclude(id__in=[11, 22, 33])  # not in
     
    # contains
    models.User.objects.filter(name__contains="ven")  # name中包含 ven 的数据
    models.User.objects.filter(name__icontains="ven") # icontains大小写不敏感
    models.User.objects.exclude(name__icontains="ven")  # name中不包含 ven的数据
     
    # range
    models.User.objects.filter(id__range=[1, 3])   # 范围between and
     
    # 其他类似
    startswith,istartswith, endswith, iendswith,
     
    # order by
    models.User.objects.filter(name='seven').order_by('id')    # asc
    models.User.objects.filter(name='seven').order_by('-id')   # desc
     
    # limit 、offset
    models.User.objects.all()[10:20]
     
    # group by
    from django.db.models import Count, Min, Max, Sum
    models.User.objects.filter(c1=1).values('id').annotate(c=Count('num'))

      

  • 相关阅读:
    Entity Framework 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭 异常处理
    MD5加密
    让AutoMapper在你的项目里飞一会儿
    C# SFTP上传与下载
    读取、修改配置文件节点
    C#对数据库的操作(增删改查)
    实现Icommand接口
    wpf创建用户控件(计时器控件)
    用lpeg解析文本语法
    一种简单的客户端更新方案
  • 原文地址:https://www.cnblogs.com/delav/p/9833268.html
Copyright © 2011-2022 走看看