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

Django学习笔记之Queryset详解

可以使用双下划线对OneToOne、OneToMany、ManyToMany进行关联查询和反向关联查询,方法filter()使用方法相同。...实现 SQL,很多关键词删、改、查时都是可以用,如order by、 like、in、join、union、and、or、not等等,我们以查询为例,说一下django如何映射SQL这些关键字...聚合函数可以像filter那样关联表,即在聚合函数Django对OneToOne、OneToMany、ManyToMany关联查询及其反向关联提供了相同方式,见下面例子。...UserJob定义User为外键,Job定义User是ManyToMany >>> a = User.objects.filter(is_active=True, userjob__is_active...只返回主表(即Author表)所有字段值,即使查询时关联了其它表,关联字段也不会返回,只有当我们通过Author instance用关联表时,Django才会再次查询数据库获取值。

2.7K30

django orm 重点大全

2.orm字段必须要知道一些属性 (0)null 如果为True,Django 将用NULL 来在数据库存储空值。...(4)unique 如果该值设置为 True, 这个数据字段整张表必须是唯一 (5)choices 由二元组组成一个可迭代对象(例如,列表或元组),用来给字段提供选择项。...一个给定 model 类实例,想得到某个 choices 字段显示值,就调用 get_FOO_display 方法(这里 FOO 就是 choices 字段名称 )。...) # 拿到关联出版社对象 print(book_obj.publish.addr) #出版《金鳞岂是池中物》那家出版社地址 # 反向查询:查询人民出版社出版所有的书名字 #...(lan_obj.book_set.all()) # 该作者关联所有书对象集合

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

    Django-models & QuerySet API

    django配置mysql数据库 查询queryset时如果需要选取查询集中某个子集字段时, 应该用切片,或者first 选择某个子集对象,这样才能够使用到 子集字段,直接queryset后选择字段会直接报错...   默认都可以修改,如果为false,admin上面不可修改且不显示,但是数据库可以改 error_messages   自定义错误信息,是字典类型 help_text   该字段提示信息 unique...    值唯一 verbose_name   显示字段名称 更多字段查看官网:https://docs.djangoproject.com/en/2.1/ref/models/fields/ View...QuerySet []> oder_by 排序 >>> models.Person.objects.order_by('birthday')[0] #排序完后取第一条 get  返回查找条件相匹配一个对象...>python manage.py createsuperuser 2,应用下admin.py引入自身models模块(或里面的类) vim admin.py from django.contrib

    1.4K20

    django select_related和prefetch_related用法区别

    ,如下图所示: 言归正传 假设我们有如下一个文章(Article)模型,其类别(Category)是单对多地关系(ForeignKey), 标签(Tag)是多对多关系(ManyToMany)。...当我们使用Article.objects.all()查询文章时,我们做了第一次数据库查询,查询是blog_article数据表, 得到数据只是文章对象列表,然而并没有包含每篇文章相关联category...当我们模板调用{{ article.category.name }} 和 {{ tag.name }}显示category和tags名字时,Django还需要重新查询blog_category和blog_tag...现在我们对article_list视图函数稍微进行修改,加入select_related方法,查询文章列表时同时一次性获取相关联category对象信息,这样模板调用 {{ article.category.name...对单对单或单对多外键ForeignKey字段,使用select_related方法 对于多对多字段和反向外键关系,使用prefetch_related方法 两种方法均支持双下划线指定需要查询关联对象字段

    1.3K20

    Django

    该文件定义新项,写函数,支持正则 也可以建立专门函数文件,只需urls 中导入即可 import django.shortcuts import HttpResponse...类名)_id 例:查询某个作者 1,先ret = get(id=x)得到作者 2,ret.book(是上边manytomanybook).all() 帮助查询关联对象 控制台打印all 有括号...列表返回所有书对象 for 显示时候 for b in ret.book.all 没有括号 """ # 6,request.POST.get("xxx") 若xxx多个参数 返回值列表对后一个...(manytomany那个book).set(getlist得到books列表) # 注意不用save() # 8,删除作者 普通删除,只不过是关联删除,先删书,再删作者 # 9,更改作者,普通更改相同...value="每个用户不同,或每次请求不同",以此识别用户 # 默认是开启, 即不能跨站请求,弱不需要注释即可 """ 使用方法:form {% csrf_token%} html中会变为

    3.5K20

    django 1.8 官方文档翻译: 2-5-6 多数据库

    使用其它管理命令 其它django-admin 命令数据库交互方式migrate相同 —— 它们都一次只操作一个数据库,使用--database来控制使用数据库。...目前,唯一一个提供hint 是instance,它是一个对象实例,正在进行读或者写操作关联。...为了保持两个对象之间关联Django 需要知道关联对象主键是合法。如果主键存储另外一个数据库上,判断一个主键合法性不是很容易。...因为跨数据库关联是不可能,这对你如何在数据库之间划分这些模型带来一些限制: contenttypes.ContentType、sessions.Session和sites.Site 可以存储分开存储不同数据库...,只要给出合适路由 auth模型 —— User、Group和Permission —— 关联在一起并与ContentType关联,所以它们必须ContentType存储相同数据库

    1.5K20

    Django之模型层(多表操作)

    1) # 为书籍绑定作者对象 a1=Author.objects.filter(id=2).first() # Author表主键为2纪录 a2=Author.objects.filter(id...表和Author_Info表之间就是一对一关系,我把关联字段写在了Author表。...、基于双下划线跨表查询   Django还提供了一种直观而高效方式查询中表示关联关系,它能自动确认sql join联系。...正向查询按属性,反向查询按表名小写   1,一对多查询 # 练习: 查询苹果出版社出版所有书籍名字价格(一对多) # 正向查询 按字段:publish queryResult...(c=Count('author')).orderby('c')   六、F查询Q查询   1,F查询 之前,对象字段只能放在比较符前面,比如filter(id__gt=2),但现在,有一个表,

    61320

    如何在 Spring Boot 读写数据

    它为开发人员提供了一种对象/关联映射工具,实现管理应用关系数据,从而简化Java对象持久化工作。很多ORM框架都是实现了JPA规范,比如:Hibernate、EclipseLink 等。...如何在 Spring Boot 读写数据 (7)@Transient 类变量注解,表示该变量不是一个到数据库表字段映射。...CascadeType.ALL | 以上四种策略 无 | 默认值 因为这四种注解只能表示实体之间几对几关系,指定所操作实体相关联数据库表字段,就需要用到 @JoinColumn 注解。...比如用户类会有一个指定密码表主键 pwd_id,将 @OneToOne 放置在用户 pwd 字段上,就可以表示用户密码类是一对一关系,并且主导类是用户类。...所以,如果站在部门角度来看 分析用户部门之间关系时,一个员工只能属于一个部门,但是一个部门可以包含有多个员工,如果我们站在部门角度来看,部门员工之间就是一对多关系,部门实体类 Department

    15.9K10

    ORM初识和数据库操作

    简单说,ORM是通过使用描述对象和数据库之间 映射元数据,将程序对象自动持久化到关系数据库。那么,到底如何实现持久化呢?...由于ORM可以自动对Entity对象数据库Table进行字段属性映射,所以我们实际可能已经不需要一个专用、庞大数据访问层。...一个给定 model 类实例,想得到某个 choices 字段显示值,就调用 get_FOO_display 方法(这里 FOO 就是 choices 字段名称 )。...与人民出版社关联所有书籍对象集合 四、基于双下划线跨表查询 Django 还提供了一种直观而高效方式查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系。...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以查询引用字段,来比较同一个 model 实例两个不同字段值。

    2.5K30

    SpringDataJpa多表查询 下(多对多)

    inverseJoinColumn:中间表外键字段关联对方表主键字段 @JoinColumn 作用:用于定义主键字段和外键字段对应关系。...); roleDao.save(role); } 多对多(保存),如果双向都设置关系,意味着双方都维护中间表,都会往中间表插入数据,中间表2个字段又作为联合主键,所以报错,...,导航到他关联对象。...它利用类类之间关系来检索对象。例如:我们通过ID查询方式查出一个客户,可以调用Customer类getLinkMans()方法来获取该客户所有联系人。...* 对象导航查询默认使用是延迟加载形式查询 * 调用get方法并不会立即发送查询,而是使用关联对象时候才会查询 * 延迟加载 * 不想用延迟加载 修改配置

    1.8K10

    06.Django基础五之django模型层(二)多表操作

    ,我们学mysql时候是怎么建立,是不是手动创建一个第三张表,然后写上两个字段,每个字段外键关联到另外两张多对多关系表,ormmanytomany自动帮我们创建第三张表,两种方式建立关系都可以,...through 使用ManyToManyField字段时,Django将自动生成一张表来管理多对多关联关系。...verbose_name指定在admin管理界面显示中文;verbose_name表示单数形式显示,verbose_name_plural表示复数形式显示;中文单数和复数一般不作区别。   ...#Emp表示表,values字段表示按照哪个字段group by,annotate里面是显示分组统计是什么 #连表: # 查询每个部门名称以及对应员工个数和员工最大年龄 ret...F() 实例可以查询引用字段,来比较同一个 model 实例两个不同字段值。

    2.7K20

    django 1.8 官方文档翻译: 1-2-1 编写你第一个Django应用,第1部分

    请参考 如何安装 Django 意见先删除旧版本 Django 再安装一个新。...在哪里可以获得帮助: 如果您在学习本教程遇到问题,请在 django-users 上发贴或者 #django on irc.freenode.net 上与其他可能会帮助您 Django 用户交流...要创建你应用,请确认 manage.py 文件同一目录下输入以下命令: python manage.py startapp polls 这将创建一个 polls 目录,其展开样子如下所示::...本例,我们定义了一个符合人类习惯字段名 Poll.pub_date 。对于模型其他字段,机器名称就已经足够替代人类名称了。 一些 Field 实例是需要参数。...这些 sql 命令其实并没有在你数据库运行 - 它只是屏幕上显示出来,以便让你了解 Django 认为什么样 SQL 是必须

    98720

    Django学习之八:forms组件【对

    没校验通过form_obj可以用于渲染,将错误信息和验证信息都渲染到form表单,不会出现form表单没有校验通过,就将部分校验通过数据也清空掉,会保留校验通过数据,只清空没有通过字段数据...这样就提供了一个方式,可以修改对象,再提交到库。还有一种情况,如果有一个manytomany字段,创建对象,建立关系可能需要先构建关联数据后,才能保存。...form表单基本上可以对应数据库中一个表一条数据。因为数据库中一个表数据可能关联到其它表数据(就是常说manyTomany,manyToone,oneToone)。...这个字段会将用户表单填入字符串,转化为date对象。(用户键入只能是字符串形式)。 这个转化过程肯定也是要有依据,得按照依据规则来,不可能用户随便输入什么字符都能转换换成date对象是吧。...form.add_error(field, error) 给参数指定字段添加错误。如果字段是校验,添加错误会将字段数据从form.cleaned_data删除。

    2.2K30

    django 1.8 官方文档翻译: 1-2-2 编写你第一个Django应用,第2部分

    你可以切换到对应旧版本教程去或者更新到较新 Django 版本。 进入管理网站 现在尝试登录进去。(还记得吗?本教程第一部分时你创建一个超级用户帐号。...不同模型字段类型 (DateTimeField, CharField) 会对应相应 HTML 输入控件。 每一种类型字段 Djaong 管理网站都知道如何显示它们。...这样的话你就需要在注册对象 时告诉 Django 对应配置。 让我们来看看如何在编辑表单上给字段重新排序。...此图片中显示了新增插槽: 还有个小问题。为了显示所有关联 Choice 对象字段需要占用大量 屏幕空间。...下面是现在样子: 默认情况下, Django 显示是每个对象 str() 结果。但是若是我们能够 显示每个字段的话有时会更有帮助

    2.5K40

    Django model 层之ModelsMysql数据库小结

    tb_person verbose_name = '用户表'#表名称 #admin站点中显示名称 verbose_name_plural = verbose_name#显示复数名称 2、自动为数据库增加...第一次创建对象时,自动设置field值为当前日期,所以,即便显示为该字段提供了值,也会自动忽视显示设定值。...null 是针对数据库而言,如果 null=True, 表示数据库字段可以为空,那么新建一个model对象时候是不会报错!!...如果修改某个已存在对象,主键列值,保存该对象,会在旧对象基础上,重新构建一个对象。...删除被参照表某条表记录,同时级联删除参照表,同待删除记录存在外键关联关系记录。 PROTECT 删除被参照表某条表记录,如果参照表,存在该记录有外键关系记录,则不让删除。

    2.2K20

    探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

    Citus 中分发数据 将 Django 应用程序更新为范围查询 使用中间件自动化 更多 确定分布策略 ,我们讨论了多租户用例中使用 Citus 所需框架无关数据库更改。...1.2 属于一个帐户每个 ManyToMany 模型上为 account_id 引入一个列 目标之前相同。我们希望能够将 ORM 调用和查询路由到一个帐户。...重新创建约束,包括 account_id 字段 要查找约束,请使用 psql 连接到您数据库运行 \d+ myapp_projectmanager 你将看到 ManyToMany (或 OneToOneField...,我们介绍了 citus ManyToMany 关系需要一个带有租户列 through 模型。...使用中间件自动化 而不是每个视图中调用 set_current_tenant(), 您可以 Django 应用程序创建安装一个新 middleware 类来自动完成。

    2.1K10

    JPA实体类注解

    ============================================= 以上是针对实体注解,接下来时针对实体实体之间关联注解: 一对多 一般是一般维护关系,也就是多一方作为关系维护端...@Id @Id设置对象表示符,标识实体类属性映射对应表主键 @GeneratedValue 设置标识符生成策略,常@Id一起使用  参数:strategy指定具体生成策略  方式一:@...(generator值一样),sequenceName指定数据库定义序列名字,allocationSize指定序列每次增长1 @Column 描述数据库表字段定义,具有一下属性  name....多对多关联上是两个一对多关联,但是ManyToMany描述,中间表是由ORM框架自动处理  可选  targetEntity:表示多对多关联另一个实体类全名,例如:package.Book.class...  mappedBy:表示多对多关联另一个实体类对应集合属性名称  两个实体间相互关联属性必须标记为@ManyToMany,相互指定targetEntity属性,  需要注意是,有且只有一个实体

    3.9K70

    Django ORM详解

    ORM:(django,根据代码类自动生成数据库表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 我们写类表示数据库表 我们根据这个类创建对象是数据库表里一行数据...马上就要开始我们orm查询之旅!!! 建表+配置url+views写相应函数 models.py(django且只能在这里写数据库相关类) ?...,如果根据UserType这张表去查询这两张关联合起来内容就是反向查 正向查-demo1--查询所有用户为COO 用户 django中外键就相当于简单使用__连表,在外键那个对象中封装了user_type...,应该是对象__跨表字段)     获取这个值时候,拿到了一行数据时候 line.对象.跨表字段   反向查找:     filter(关联这个表表明) 自动创建和表明相同对象,通过这个对象...属性时候,我们可以直接定义为数据库字段名”,并且DjangoQ中支持跨表操作“双下划线”,所以我们定义name时候可以直接定义双下划线操作 ?

    1.7K100
    领券