首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【Python全栈100天学习笔记】Day41 Django深入理解框架

我们可以通过manage.py开启Shell交互式环境,然后使用Django内置ORM框架模型进行CRUD操作。...on_delete:关联对象被删除时对应动作,可取值包括django.db.models中定义: CASCADE:级联删除。...PROTECT:抛出ProtectedError异常,阻止删除引用对象。 SET_NULL:把设置为null,当null属性被设置为True时才能这么做。...SET_DEFAULT:把设置为默认值,提供了默认值才能这么做。 ManyToManyField属性 symmetrical:是否建立对称多关系。...managed 设置为True时,Django在迁移中创建数据表并在执行flush管理命令时把表移除 order_with_respect_to 标记对象为可排序 ordering 对象默认排序 permissions

2.2K30

浅谈Django QuerySet对象(模型.objects)常用方法

只有一个author属性连接一个. author__name是book下author属性name,即book这个表通过访问到author这个表中name值。...执行完上述代码之后就在book中创建了一个新属性author_name,但是只在内存中,不会映射到数据库中去。 4.order_by: 指定将查询结果根据某个字段进行排序。...需求:根据每本图书销量来进行排序 from django.db.models import Q,F,Count def index2(request): # 1....(即只能在一多模型上,不能多一,多多等),比如我们只在Book设置了author和publisher。...但是这两种方法执行效率都比传统方法执行效率高。传统方法就是先返回book对象,再通过book去查询对应相关信息。

3.6K20

Django之ORM

Django中具体对应方式为: 类名对应数据库中表名 类名对应数据库中表名 类属性对应数据库里字段 类实例对应数据库表里一行数据 类实例对象属性对应这行中字段值 一.数据库连接 Django...这里id是自动创建,school_id是school添加产生 如果想要与另一张表其他字段添加,需要在加上参数to_filed=’字段名’,同时这个字段必须是unique=True 2.一一...一创建即在外创建好后给school_id添加UNIQUE=True属性 3.多多 teacher=models.ManyToManyField(teacher) 这样Django会默认添加一张表为...表示多关系。 除了这种方式也可以手动创建一个表,手动添加两个来实现多多。...使用’__’进行查找 一多 school_name为对象字段 school为student表中设置字段 student1=student.objects.filter(id=2).values

1.1K30

Django 1.10中文文档-第一个应用Part7-自定义管理站点

Django在admin站点中,自动地将所有的关系展示为一个select框。在我们例子中,目前只有一个question对象存在。 请注意图中绿色加号,它连接到Question模型。...每一个包含关系对象都会有这个绿色加号。点击它,会弹出一个新增Question表单,类似Question自己添加表单。...填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice关联对象。通俗讲就是,新建一个Question并作为当前Choice。...你可以点击其中一列表头来让列表按照这列值来进行排序,但是was_published_recently这列表头不行,因为Django不支持按照随便一个方法输出进行排序。...关于这些方法属性更多信息,请参见list_display。      我们还可以对显示结果进行过滤,通过使用list_filter属性

3.6K60

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

连接和聚合 至此,我们已经了解了作用于单种模型实例聚合操作, 但是有时,你也想所查询对象关联对象进行聚合。...例如,我们可以查询所有出版商,并注上它们一共出了多少本书(注意我们如何用 ‘book’指定Publisher -> Book 反转关系): >>> from django.db.models import...例如,根据一本图书作者数量多少查询集 QuerySet进行排序: >>> Book.objects.annotate(num_authors=Count('authors')).order_by('...不是在原始 QuerySet返回结果中每个对象中添加注解,而是根据定义在values() 子句中字段组合先结果进行唯一分组,再根据每个分组算出注解值, 这个注解值是根据分组中所有的成员计算而得...但是上面那样做是行不通。这是因为默认排序项中 name也是一个分组项,所以这个查询会根据非重复 (data, name) 进行分组,而这并不是你本来想要结果。

1.6K30

Django项目知识点(三)

默认值为True,如果你不希望这么做,可以把manage值设置为False order_with_respect_to 这个选项一般用于多关系中,它指向一个关联对象,就是说关联对象找到这个对象后它是经过排序...指定这个属性后你会得到一个get_xxx_order()和set_xxx_order()方法,通过它们你可以设置或者回去排序对象 ordering 这个字段是告诉Django模型对象返回记录结果集是按照哪个字段排序...模型关系 基本原则: 一表,两表属性实际上完全可以合并成一个表,共用一个主键即可; 一表,可以设中间关联表,也可以将关联表并入“多”这头;若设独立关联表,则可引入“多”这头主键作为主键...,也可另立主键并将“一”和“多”两表主键作为关联表; 多表,则必须设中间关联表,关联表设独立主键,并引入两个“多”头主键作为关联表。...在这里插入图片描述 如果没有学生,没有课程来报名上学干嘛,所以是多一,多个学生合成一张报名表 注意:和一一关系时候需要加on_delete选项,此参数为了避免两个表里数据不一致问题,不然会报错

1.8K30

Django学习-第七讲:django常用字段、字段属性和表关系、操作

比如我想在查找数据时候根据添加时间排序 class Book(models.Model): name = models.CharField(max_length=20,null=False)...第一个参数是引用是哪个模型,第二个参数是在使用引用模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等。这里以一个实际案例来说明。...一个Category可以有多个文章,一个Article只能有一个Category,并且通过进行引用。...因此在底层,Django为Article表添加了一个属性名_id字段(比如author字段名称是author_id),这个字段是一个,记录着对应作者主键。...那么将会获取SET函数中值来作为这个值。SET函数可以接收一个可以调用对象(比如函数或者方法),如果是可以调用对象,那么会将这个对象调用后结果作为值返回回去。

3.9K30

Django相关知识点回顾

class Meta: db_table = '' 定义属性: # 表中外字段名格式: hbook = models.ForeignKey('BookInfo...QuerySet(查询集) exclude 查询条件 返回不满足条件所有数据 QuerySet(查询集) order_by 排序字段 查询结果进行排序 QuerySet(查询集) aggregate...()过滤器调用聚合函数 排序排序默认是升序,降序在排序字段前加- 使用order_by 关联查询: 1.查询和指定对象关联数据 # 由1查多 一对象.多类名小写_set.all() 例:book.heroinfo_set.all...() # 由多查1 多对象.属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(多类名__字段__条件=值) 例:books =...BookInfo.objects.filter(heroinfo__hcomment__contains='八') # 查英雄(多) 多类.objects.filter(属性__字段__条件=值)

10K51

Django model,baseModel基类, migrate移行

(默认_set)get_latest_by 指定 first(), last() 排序条件default_permissions = () model默认权限指定managed 迁移对象指定1.abstract...补充:on_delete在外中必须设置,表示级联关系。 级联关系:例,主表数据删除后,参照表键值,如何处理。  限制 insert参照表数据之前,主表必须先登录数据,以避免脏数据产生等。...DO_NOTHING:不会被级联。例:product被删,orderproduct不做任何处理SET_DEFAULT:配合default属性使用。...假设A表依赖B表,B记录删除,A表字段重置为default属性设置值。SET_NULL:配合NULL=True使用。...假设A表依赖B表,B记录删除,A表字段重置为NULL, 例:product被删,orderproduct,重置为NULL注:多多字段不能设置on_delete级联关系。有空再研究。

1K30

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

如果没有给定自述名,Django根据字段属性名称自动创建自述名 —— 将属性名称下划线替换成空格。...中介模型有一些限制: 中介模型必须有且只有一个到源模型(上面例子中Group),或者你必须使用ManyToManyField.through_fields 显式指定Django 应该使用。...如果你模型中存在超个一个,并且through_fields没有指定,将会触发一个无效错误。 目标模型有相同限制(上面例子中 Person)。...对于通过中介模型与自己进行多关联模型,允许存在到同一个模型两个,但它们将被作为多多关联关系两个(不同)方面。...Changed in Django 1.7: 在Django 1.6 及之前版本中,中介模型禁止包含多于一个

4.9K20

Django数据库查询优化与AJAX

如: res = models.Book.objects.all()#只有当我们使用res时才会执行数据库查询操作 all、only与defer all 拿到自己所有的属性,但是没有与其他表建立属性...、一字段,特点:内部自动连表操作,会将括号内外字段所关联表与当前表自动拼接成一张表,然后将表中数据一个一个查询出来封装成一个一个对象。...这样做好处:跨表查询也不需要重复走数据库,减轻数据库压力。select_related()括号内放多个字段,逗号隔开,会将多个字段关联表与当前表拼成一张大表。...,特点:按步骤查询多张表,然后将查询结果封装到对象中,给用户感觉好像还是连表操作,括号内支持传多个字段,每放一个字段就会多走一条SQL语句,多查一张表。...2.JSON数据进行序列化。 3.Django后端针对json格式数据不会做任何处理,只是将数据原封不动放在了request.body中,我们需要手动进行反序列化处理。

2.4K20

使用ORM完成模型CRUD操作

在了解了Django提供模型管理平台之后,我们来看看如何从代码层面完成对模型CRUD(Create / Read / Update / Delete)操作。...我们可以通过manage.py开启Shell交互式环境,然后使用Django内置ORM框架模型进行CRUD操作。 (venv)$ cd .....pk=10).emp_set.all() # 通过部门反查部门所有的员工 , , ]> 说明1:由于员工与部门之间存在多关联...,所以也能通过部门反向查询该部门员工(从一多关系中“一”一方查询“多”一方),反向查询属性默认名字是类名小写_set(如上面例子中emp_set),当然也可以在创建模型时通过ForeingKey...related_name属性指定反向查询属性名字。

67810

Django(ForeignKey)操作以及related_name作用

之前已经写过一篇关于Django文章,但是当时并没有介绍如何根据对数据操作,也就是如何通过主表查询子表或者通过子表查询主表信息 首先我定义了两个模型,一个是老师模型,一个是学生模型,...一个老师对应多个学生,这个算是一个一类型(如下图所示) 那么如果我们要想查询一个老师对应学生有哪些,该如何操作呢?...,并获取老师相关信息 返回一个teacher对象,接下来就是查询teacher相关联学生对象,在这里有一个需要注意点,django默认情况下每一个主表对象都有一个是属性,可以通过它查询到所有关于子表信息...上面的查询主要是通过主表查询子表信息 下面说一下如何通过子表查询主表相关信息,也就是查询一个学生所对应老师信息 首先需要先获取一个子表对象,那么就可以通过定义时候那个字段名获取关于主表信息了...比如我得到了一个student对象,然后我想要得到这个student对象对应主表teache中信息的话,就使用 student.teacher 获取,其中这个teacher就是在子表中定义字段

2K10

Django3.2边学边记—Adimn站点管理

准备工作 创建管理员用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...控制显示列,Django 会尝试按照这个顺序解释 list_display 每个元素: 一个模型字段。 一个可调用对象。 一个代表 ModelAdmin 属性字符串。...属性,指定排序依据模型属性,如下: 1234567 # from django.db import models# from django.contrib import adminclass TestInfo...,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display是不能直接接收字段),会将对应字段值列出来,一般用于快速过滤有重复值字段...12 class TestAdmin(admin.ModelAdmin):    search_fields = ['id','name'] 在搜索框中进行搜索时,Django 会将搜索查询拆分成多个词

1.3K30

Django框架学习(四)

exclude可以写查询条件,返回是不满足条件所有数据 order_by是排序,参数是排序字段 aggregate聚合,参数是聚合类,返回是一个字典 count没有参数,返回查询结果数量,返回是一个数字...1.2条件查询 注意:可以写多个查询条件,默认是且关系 对应get,filter,exclude参数中可以写查询条件 格式:属性名__条件名=值 1.3F对象 用于查询时字段之间比较 from django.db.models...order_by 1.7关联查询 1、查询和指定对象关联数据(重点掌握) 由一查多:一对象.多类名小写__set.all() 由多查一:多对象.属性 2、通过模型类进行关联查询 查图书:一类.objects.get...|filter(多类名__字段__条件=值) 查英雄:多类.objects.filter(属性__字段__条件=值) 2.查询集 注意:对于queryset类对象,可以继续调用之前任何一个查询函数...两大特性: 1、惰性查询:只有在使用查询集中数据时才会进行数据库真正查询操作 2、查询结果缓存:如果使用同一个查询集时,只有在第一次使用查询集时会进行数据库查询操作,然后Django框架就会把查询结果存起来

1.5K41

重点内容回顾-DRF

重点内容回顾-DRF 1. on_delete on_delete是定义模型类中外一个选项。 on_delete选项指明是主表删除数据时候,对于引用表数据如何处理。...b.PROTECT保护,通过抛出一个异常ProtectedError异常,来阻止删除主表中被引用数据。...2. related_name related_name是在定义模型类时,一个选项。它功能下面慢慢给大家分析一下。...数据库查询 属性: queryset(指定视图所使用查询集) 方法: get_queryset返回视图所使用查询集 get_object从视图所使用查询集中查询指定对象,默认根据pk进行查询。...5.6.5视图集对象action属性 视图集对象action属性是一个字符串,我们可以根据action获取所要执行是哪一种操作。

2.4K20
领券