为了账号安全,请及时绑定邮箱和手机立即绑定
  • 笔记test

    查看全部
  • 不返回queryAPI

    1.获取对象get(),get_or_create(),frist(),last(),latest(),earliest(),in_bulk()

    2.创建对象create(),bulk_create(),create_or_updata()创建,批量创建,创建或更新

    3.更新对象updata()updata_or_create()更新,更新或创建

    4.删除对象delete()使用filte过滤

    5其他操作exists(),count(),aggrrgate()判断是否存在,统计个数,聚合

    查看全部
  • 返回新的queryset得api:

    exclude()根据条件排除一些记录Student.objects.all().exclude(name='a')

    reverse()反向排序必须在模型类对应的元数据设置排序Student.objects.all().exclude(name='a').reverse()

    distinct()去重

    extra()实现字段别名

    defer()排除一些字段

    only()选择一些字段

    valus(),valus_list()获取字典或元组形式得queryset

    datas(),datatimes()根据时间日期获取查询集

    union(),intersection(),difference()并集,交集,差集

    select_relate()一对一多对一查询优化

    prefetch_related()一对多,多对多查询优化;反向查询

    annotate()使用聚合函数、求和、平均数 raw ()执行原生sql

    course.objects,values('teacher').annotatea(avg = Avg'字段名')

    查看全部
  • 查询集介绍:

    查询、检索、过滤

    teacher = Teacher.objects.all()

    teacher = Teacher.objects.get(主键、唯一键)返回一条结果

    teacher = Teacher.objects.filter(fans__gte =) 返回多条结果 字段数据匹配大小写敏感 (fans__gte =大于等于、fans__exact刚好等于、fans__gt大于、fans__in在某某之内 、fans__isnull是否为空、fans__lt小于、fans__lte小于等于、fans__range在某某范围之内、、、、)

    结果切片、排序、链式查询

    Teacher.Object.all()[:1]

    Teacher.Object.all().order_by('fans')/('-fans')

    Teacher.Object.filter(fans__get).order_by('nickname')

    查看执行的原生sql:

    str(语句例如Teacher.Object.filter(fans__get).order_by('nickname').query)



    查看全部
    0 采集 收起 来源:查询集介绍

    2019-06-04

  • 自增长字段,默认int,Auto = models.AutoFileld()

    bigAuto = models.bigAutoFileld()

    二进制数据:Binary = models.BinaryField()

    布尔型:Boollean = models.BooleanField()

    NullBoolean = models.NullBooleanField()

    整型:5个字节:PositiveSmallInteger = models.PositiveSmallIntegerField()

    6个字节:SmallInteger = models.SmallIntegerField()

    10个字节:PositiveInteger = models.PositiveIntegerField()

    11个字节:Integer = models.IntegerField()

    20个字节:BigInteger = models.BigIntegerField()

    字符串:varchar:Char = models.CharField()

    longtext:Text = models.TextField()


    时间日期:Data = models.DataField()  年月日

    DataTime = models.DataTimeField()  年月日时分秒

    Duration = models.DurationField()  int


    浮点型:Float = FloatField()

    Decimal = model.DecimalField()


    其他字段:

    Email = models.EmailField()

    Image = models.ImageField()

    File = models.FileField()

    FilePath = models.FilePathField()

    Url = models.UrlField()

    UUID = models.UUIDField()

    GenericIPAddress = models.GenericIPAddressField()


    查看全部
    2 采集 收起 来源:常用的字段

    2019-06-04

    • F对象: 操作字段的数据

      • Course.objects.update(price=F('price') - 11) # 所有课程价格减11

      • Course.objects.filter(volume__lte=F('price') * 10)) # 查询课程价格的10倍小于销量的课程

    • Q对象: 结合AND, OR, NOT, |, ~, &实现复杂的查询

      • Couse.objects.filter(Q(title__icontains='java') & Q(volume__gte=5000)) # 查询销量大于等于5000的java课程

    查看全部
  • select_related和prefetch_related保证在查询对象集合的时候,把指定的外键对象也一并完整查询加载,避免后续的重复查询

    • select_related适用于外键多对一的关系查询

    • prefetch_related适用于一对多或者多对多的查询


    查看全部
  • 向数据表中导入数据的三种方式:

    1. django shell: python manage.py shell => from courses.teacher import Teacher => t = Teacher(nickname="jack")=>t.save()

    2. 通过脚本导入数据(见截图)

      1. Teacher.objects.create(nickname="Jack", introduction="Python工程师", fans=123)

      2. Course.object.bulk_create([Course(title="Python系列教程(1)", teacher=Teacher.objects.get(nickname="Jack"), type=.....)])

      3. Student.objetcs.update_or_create(nickname="ABC", default={"age": 18, "gender": 2, "study_time": 0})

      4. TeacherAssistant.objects.get_or_create(nickname="助教1", default={"hubby":  "慕课网学习", "teacher": Teacher.objects.get(nickname="Jack")})

      5. 关联外键:

        1. 正向添加: Student.objects.get(nickname="ABC").course.add(*Course.objects.filter(volume__gte=1000)) # ABC学生关联到销量大于1000的课程

        2. 反向添加: Course.objetcs.get(title="Python系列教程2").student_set.add(*Student.objetcs.filter(study_time__gte=500)) #关联到学习时间大于500小时的同学

    3. fixtures Django Serialization:提供一种可以被Django的Serialization识别的json格式的文件

      1. 导出数据: python manage.py dumpdata > xxxx.json

      2. 导入数据: python manage.py loaddata xxxx.json

    查看全部
    0 采集 收起 来源:Django数据导入

    2019-05-18

    • 删除一个模型类的步骤

    1. 删除模型类代码

    2. 删除模型类在migrations目录下生成的对应文件

    3. 删除django在数据表migrations中对应的生成记录

    4. 删除对应的数据表

    查看全部
  • Meta数据

    • db_table: 指定数据表的名称

    • ordering: 指定按照哪些字段来排序, 类型为一元元组

    • verbose_name: 为模型类设置一个直观可读的名称

    • abstract: =True将该类设置为基类, 不生成数据表, 仅供其它类继承

    • permissions: 为数据表设置额外的权限, 通过二元元组来实现(('定义好的权限', '权限的说明'), )

    • managed: 表示是否按照django既定的规则来管理数据表, 默认是True

    • unique_together: 指定联合唯一键,可以使用一元元组或二元元组(即多个唯一约束)

    • app_label: 定义模型类属于哪一个应用

    • db_tablespace: 定义数据表空间的名字

    查看全部
    2 采集 收起 来源:元数据介绍

    2019-05-18

  • 自关联的两种写法

    1. pid = models.ForeignKey('self', null=True, blank=True)

    2. pid = models.ForeignKey('${TableName}', null=True, blank=True)

    查看全部
    0 采集 收起 来源:自关联

    2019-05-18

  • 关系型字段的on_delete参数

    查看全部
    0 采集 收起 来源:字段参数

    2019-05-18

    • 所有字段都有的属性值

      • editable: 是否可以编辑, 默认为False

      • help_text: 在表单中显示帮助信息的参数

      • db_index: 为当前字段建立索引, 默认为False

      • null/blank: 字段是否可以为空, null约束数据库层面, blank约束前端表单提交时

      • unique: 唯一性约束, 默认为False

      • verbose_name: 设置字段别名(或备注)

      • primary_key: 设置当前字段是否为主键, 默认为False

      • db_column: 设置当前字段的名称

    • 属于个别字段的参数

      • max_length[CharField]

      • unique_for_date[DateField]: 字段日期必须唯一

      • unique_for_month[DateField]

      • auto_now[DateField]: 修改记录时是否自动更新当前日期

      • auto_now_add[DateField]: 添加记录时是否自动设置当前日志

      • max_digits[DecimalField]: 总共有多少位

      • decimal_places[DecimalField]: 小数点后数字的个数

    • 关系型字段的参数

      • related_name: 外键关联中的反向查询,由父表查询子表的信息

      • on_delete: 当一个被外键关联的对象被删除时,Django将模仿on_delete参数定义的SQL约束执行相应操作

        • CASCADE: 模拟SQL语言中的ON DELETE CASCADE约束,将定义有外键的模型对象同时删除(该操作为当前Django版本的默认操作)

        • PROTECT: 阻止上面的删除操作, 弹出ProtectedError异常

        • SET_NULL: 将外键字段设为null, 只有当字段设置了null=True时, 方可使用该值

        • SET_DEFAULT: 将外键字段设为默认值, 只有当字段设置了default参数时,方可使用

        • DO_NOTHING: 什么也不做

        • SET(): 设置为一个传递给SET()的值或者一个回调函数的返回值, 注意大小写

    查看全部
    2 采集 收起 来源:字段参数

    2019-05-18

    • 一对一(OneToOneField)

      • models.OneToOneField(Test)

    • 多对一(ForeignKey)

      • foreign = models.ForeignKey(Other)

    • 多对多(ManyToManyField),默认或自定义中间表

      • models.ManyToManyField(B)

    查看全部
    1 采集 收起 来源:关系型字段

    2019-05-17

  • # 自增长字段
    Auto = models.AutoField()
    BigAuto = models.BigAutoField()
    
    # 二进制数据
    Binary = models.BinaryField()
    
    # 布尔型
    Boolean = models.BooleanField()
    NullBoolean = models.NullBooleanField()
    
    # 整型
    PositiveSmallInteger = models.PositiveSmallIntegerField(db_column="age")  # 5个字节
    SmallInteger = models.SmallIntegerField(primary_key=False)  # 6个字节
    PositiveInteger = models.PositiveIntegerField()  # 10个字节
    Integer = models.IntegerField(verbose_name="11个字节大小")  # 11个字节
    BigInteger = models.BigIntegerField(unique=True)  # 20个字节
    
    # 字符串类型
    Char = models.CharField(max_length=100, null=True, blank=True, db_index=True)  # varchar
    Text = models.TextField(help_text="这个是longtext")  # longtext
    
    # 时间日期类型
    Date = models.DateField(unique_for_date=True, auto_now=True)
    DateTime = models.DateTimeField(editable=False, unique_for_month=True, auto_now_add=True)
    Duration = models.DurationField()  # int, Python timedelta实现
    
    # 浮点型
    Float = models.FloatField()
    Decimal = models.DecimalField(max_digits=4, decimal_places=2)  # 11.22, 16.34
    
    # 其它字段
    Email = models.EmailField()  # 邮箱
    Image = models.ImageField()
    File = models.FileField()
    FilePath = models.FilePathField()
    URL = models.URLField()
    UUID = models.UUIDField()
    GenericIPAddress = models.GenericIPAddressField()
    查看全部
    2 采集 收起 来源:常用的字段

    2019-05-17

首页上一页12345下一页尾页

举报

0/150
提交
取消
课程须知
1、Python基础知识 2、会Django开发环境搭建 3、MySQL的简单使用
老师告诉你能学到什么?
1、什么是Django ORM 2、常用的字段和属性有哪些 3、如何定义元数据Meta 4、Django数据表相关操作 5、Models API入门到精通,ORM无障碍操作MySQL 6、F对象和Q对象实现复杂的高级操作

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!