首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django之Model操作数据库详解

,使用的连接前缀,用于替换【表名】 如: models.UserGroup.objects.filter(表名__字段名=1).values('表名__字段名') limit_choices_to...(*book_obj)#删除指定作者对象所有的书籍 使用models.ManyToManyField()会自动创建第三张表 1.4手动创建多对多的作者与书籍信息表 class Book2Author(models.Models...(id=3)[0]#获取Author表中id为3的作者对象 book_obj=models.Book.objects.filter(id=4)[0]#获取Book表中id为4的书籍对象 方式一: obj1...filter返回的是一个QuerySet对象,filter里可以设定多个过滤条件 4、查 查询数据使用QuerySet API。...如:         # 列表中包含的是Student对象     >>> Student.objects.filter(name__startswith='Lin')     <QuerySet

7.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django---ORM操作大全

    数据库表中多个数据 获取到的数据类型本质上都是 queryset类型, 类似于列表, 内部有3种表现形式(对象,字典,列表) modle.表名.objects.all() modle.表名.objects.values...() 反向操作 :obj.小写的表名_set 多对多和外键跨表一样都是 小写的表名_set 3、既自定义第三张关系表 也使用ManyToManyField('Boy')字段(杂交类型) ManyToManyField...models.ManyToManyField('Userinfo')生成 特性: obj = models.UserInfo.objects.filter(id=1).first()  获取对象 1、查询第三张关系表前面那一列...即在查询集上生成聚合。...此时Django为我们提供了F和Q查询: 1、F 可以获取对象中的字段的属性(列),并对其进行操作; from django.db.models import F,Q #F 可以获取对象中的字段的属性

    6.9K100

    django 1.8 官方文档翻译: 2-2-1 执行查询

    使用过滤器获取特定对象 all()方法返回的结果集中包含全部对象,但是更普遍的情况是你需要获取完整集合的一个子集。 要创建这样一个子集,需要精炼上面的结果集,增加一些过滤器作为条件。...举个例子,要获取年份为2006的所有文章的结果集,可以这样使用filter()方法: Entry.objects.filter(pub_date__year=2006) 在默认的管理器类中,它相当于:...同样的情形也出现在 ManyToManyField 上。...对象比较 要比较两个对象,就和 Python 一样,使用双等号运算符:==。实际上比较的是两个 model 的主键值。...在关联对象上的查询 包含关联对象的查询与包含普通字段值的查询都遵循相同的规则。为某个查询指定某个值的时候,你可以使用一个类实例,也可以使用对象的主键值。

    4.4K20

    Django学习笔记之ORM字段和字段参数

    简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 2. ORM由来 让我们从O/R开始。...,用于代替 【表名_set】 如: obj.表名_set.all() related_query_name=None, # 反向操作时,使用的连接前缀,用于替换【表名】 如...,用于代替 【表名_set】 如: obj.表名_set.all() related_query_name=None, # 反向操作时,使用的连接前缀,用于替换【表名】 如...对于多对多字段(ManyToManyField)和一对多字段,可以使用prefetch_related()来进行优化。...def get(self, *args, **kwargs): # 获取单个对象 def create(self, **kwargs): # 创建对象 def bulk_create

    5.1K10

    Django之Model世界

    ,不存在则报错(不建议使用) models.Tb1.objects.all() -----获取全部 models.Tb1.objects.filter(name='seven')...gt=1) #获取id大于1且小于10的值 1.8存在  models.Tb1.objects.filter(id__in=[11,22,33]) #获取id...(i),i.user,i.user_type.caption) #得到的ret是一个queryset对象,只有我们循环我们得到每一行的一个对象的时候才可以用.字段名获取数据 # 想获取和其有联系表的数据的时候...,i.user_type得到的是一个有联系表的对象,我们就可以获取数据了 1 2 3 4 5 6 7 #在filter()或values()中查询使用 ret1 = models.UserInfo.objects.filter...input的内容,循环一个个获取;提交数据 // console.log($(this)[0]) // ($(this)[0],是把Jquery对象转变成DOM对象

    2.3K20

    Django学习笔记之Models与ORM操作

    (id=1).delete()   注意:表面上是删除了一条,实际上,Django会默认把這个记录关联的字段,全部删除!...(id=2).update(name='teQ')   注意:     1.update不能修改一个单一对象,也就是说对于get()获取的数据,是不能用update.而filter()获取的数据是一个QuerySet...__gt=1) # 获取id大于1 且 小于10的值 # models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据...F查询和Q查询     F 使用查询条件的值,专门取对象中某列值的操作     Q 查询提供了或操作 # from django.db.models import F # models.Tb1...(q1)#[, ] # 2、可以组合使用&,|操作符,当一个操作符是用于两个Q的对象,它产生一个新的Q对象。

    1.2K60

    django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

    当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系。 OneToOneField 需要一个位置参数:与 model 关联的类。...SQL 保留字,如 join, where 和 select, 可以做为 model 中字段的名称。...所以,model 方法应该作用于 model 类的实例(也就是说,在实例对象上使用 model 方法,而不是在类上直接使用)。 最好是只在一个地方(就是在 model 中)保存商业逻辑。...小心使用 related_name 如果你在 ForeignKey 或 ManyToManyField 字段上使用 related_name 属性,你必须总是为该字段指定一个唯一的反向名称。...Django 自带的 User model 没有定义排序设置(这是故意为之,是因为排序开销极大,我们不想在获取用户时浪费额外资源)。

    3.1K30

    Django ORM 多表操作(二)

    (name='Hammer').first() hans=Author.objects.filter(name='hans').first() # 1 没有返回值,直接传对象 book.authors.add...(name='红楼梦').first() # 1 传作者id book.authors.remove(1) # 2 传作者对象 hans = Author.objects.filter...总结 使用annotate()分组,括号内写聚合函数 values在前面,表示SQL中group by的字段 values在后面,表示取出 字段 filter在前面,表示SQL中where条件 filter...可以添加auto_now_add和auto_now参数,auto_now_add表示如果配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库,auto_now表示如果配置上auto_now...,来查了数据,但是执行原生sql,跟对象类型无关了,查出什么字段,可以直接使用该字段''' res = models.Author.objects.raw('select * from app01_book

    1.1K20

    Django项目知识点(四)

    (is_delete= False) 现在拿到没有删除的部分数据,不拿author字段 app.object的用法 filter() 过滤查询对象。...exclude() 排除满足条件的对象 annotate() 使用聚合函数 order_by() 对查询集进行排序 reverse() 反向排序 distinct() 对查询集去重...dates() 根据日期获取查询集 datetimes() 根据时间获取查询集 none() 创建空的查询集 all() 获取所有的对象 union() 并集 intersection...SQL是获取全部记录,相当于QuerySet如下查询: qs = new.objects.all() filter() filter是筛选的意思,通过filter筛选得到符合条件的数据集。...tags = Tag.objects.only('name').filter(is_delete=False) values() only() 返回的是queryset字典,不是对象,only才是返回的是对象

    1.6K30
    领券