django

【Django】ORM操作#2

本小妞迷上赌 提交于 2021-02-13 05:26:04
@[TOC] 必知必会的13条查询方法 ==1. all()== 查询所有结果 . **==2. get( kwargs)== 返回与所给筛选条件相匹配的对象,返回结果有且只有一个. 如果符合筛选条件的对象超过一个或者没有,都将抛出异常. . **==3. filter( kwargs)== 返回所有符合筛选条件的对象. . **==4. exclude( kwargs)== 返回所有不符合筛选条件的对象 . * ==5. values( field)== 返回一个ValueQuerySet(一个特殊的QuerySet). 运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列. 例如(返回值): <QuerySet [{'id': 1, 'name': 'zyk', 'age': 24, 'birth': datetime.datetime(2018, 10, 11, 1, 17, 47, 380591, tzinfo=<UTC>), 'phone': '17600390376'}]> . * ==6. values_list( field)== 它与values()非常类似,它返回的是一个元组序列,values返回的是一字典序列 . * ==7. order_by( field)== 对查询结果排序. 参数接收字符串类型的字段,指定按某个字段排序. 使用负号

WebSocket

纵然是瞬间 提交于 2021-02-12 07:57:46
一 . WebSocket原理   1.1.背景 WebSocket 是基于Http 协议的改进,Http 为无状态协议,基于短连接,需要频繁的发起请求,第二 Http 只能客户端发起请求,服务端无法主动请求。   1.2.相同点 1.都是基于TCP的应用层协议。 2.都使用Request/Response模型进行连接的建立。 3.在连接的建立过程中对错误的处理方式相同,在这个阶段WS可能返回和HTTP相同的返回码。 4.都可以在网络中传输数据。   1.3.不同点 1.WS使用HTTP来建立连接,但是定义了一系列新的header域,这些域在HTTP中并不会使用。 2.WS的连接不能通过中间人来转发,它必须是一个直接连接。 3.WS连接建立之后,通信双方都可以在任何时刻向另一方发送数据。 4.WS连接建立之后,数据的传输使用帧来传递,不再需要Request消息。 5.WS的数据帧有序。 6.WebSocket 分为握手和数据传输   1.4.WebSocket的握手 客户端的握手如下: GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example

django之contenttype

这一生的挚爱 提交于 2021-02-12 05:47:06
一 楔子 路飞学城   路飞学城有两种收费策略。一是按照学位来收费,python,C++,Java,另外一种是按照部分课程收费,python基础,面向对象,函数,这样一部分来收费。涉及到时间,一个月时长的多少钱,两个月时长的多少钱。   所以,第一版的表格设计如下。   四张表,价格策略外键关联课程表。         进阶1:两张价格策略表的重复的太多,没有必要      可以在价格策略表后面新添加一列,空表示不相关。   表面上这个没问题解决了。隐患是 课程除了学位课,普通课外,以后可能还有新的种类的课程,如果依照这种思路,每当出现一个新的课程,数据库的表结构就要发生改变,这是不允许的。 更好的方法是什么呢?   进阶2 字段修改为表名,ID这样都多少表都没有关系了。有新的课程出现,也可以解决掉。数据库的结构也不需要改。 是不是很机智,很巧妙。   适用范围:一张表同时和多张表进行关联。   这就是contentype帮我们实现的效果。      进阶3: 有没有优化的余地呢     对面价格策略表,数据量非常大的时候,如果突然间想改一下课程表的名字,如果普通课程表,变为 普通的的课程表。这种情况下,表的改动量是非常巨大的。所以,新添加一个表,存储所有的表名称。价格策略中的表名,关联这个新建的表的id。这样如果,出现想修改某张表的表名的时候,直接对新建的这张表进行修改,就可以。

Django-ContentType

霸气de小男生 提交于 2021-02-12 05:46:50
背景:学位课、专题课、价格策略(每一种课程(学位课和专题课下可分为不同的种类的课程)在不同学习时间内的价格不同) 例如:如何将课程表与价格策略表关联起来: 用外键是可以将课程表和价格策略表关联起来的,但是在后面对表数据的操作起来会非常的复杂,所以我们可以使用Django的ContentType组件来完成: model.py class Course(models.Model): name =models.CharField(max_length=32,verbose_name= " 专题课程 " ) class DegreeCourse(models.Model): name =models.CharField(max_length=32,verbose_name= " 学位课程 " ) class PricePolicy(models.Model): period =models.CharField(max_length=32,verbose_name= " 周期 " ) price =models.FloatField(verbose_name= " 价格 " ) 得到表: django_content_type表(可以用次表与价格策略表关联) model.py 加入次字段即可关联PricePolicy表 from django.contrib.contenttypes

Django之contenttype

可紊 提交于 2021-02-12 05:46:34
from django.db import models from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation from django.contrib.contenttypes.models import ContentType class Course(models.Model): """ 普通课程 """ title = models.CharField(max_length=32) # 仅用于反向查找 price_policy_list = GenericRelation("PricePolicy") class DegreeCourse(models.Model): """ 学位课程 """ title =models.CharField(max_length=32) # 仅用于反向查找 price_policy_list = GenericRelation("PricePolicy") class PricePolicy(models.Model): """ 价格策略 """ price = models.IntegerField() period = models.IntegerField() content_type = models.ForeignKey

django contenttype

帅比萌擦擦* 提交于 2021-02-12 05:46:16
下图即为django的contenttype表 models.py 1 from django.db import models 2 from django.contrib.contenttypes.models import ContentType 3 from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation 4 5 6 class PythonBasic(models.Model): 7 course_name = models.CharField(max_length=32 ) 8 coupon = GenericRelation( " Coupon " ) # 反向查询 通过此字段,类似于 releted_name 9 class Oop(models.Model): 10 course_name = models.CharField(max_length=32 ) 11 coupon = GenericRelation( " Coupon " ) 12 class Coupon(models.Model): 13 coupon_name = models.CharField(max_length=32 ) 14 content_type = models

django之contenttype

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-12 05:37:27
1、contenttype:在django中将models.py文件的表结构写好后,通过makemigrations和migrate两条命令进行数据库迁移后,在数据库中会自动生成一个django_content_type表。 2、contenttype表的字段: id:id; app_label:新的model所对应的app应用名称; model:model的名称 即app应用中的model.py所对应的新增的表结构(类名)。 3、contenttype表的作用:每当我们创建了一个新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。比如我在应用api的models.py中创建表class Course(models.Model): pass。从数据库查看ContentType表会相应的增加一条数据 id:--, app_label:api, model:course。 4、应用场景:当出现一张表的数据要与多张表的数据关联的时候使用,   示例:现有两种课程(按不同标准收费的课程),每种课程对应多种收费方式,首先想到的是创建一张课程表,然后创建一张收费标准表让他们相关联,这种方法可行但存在缺陷; 表单创建: from django.db import models # 课程种类 轻课和学位课 class Course(models.Model): id

django contenttype 表应用

一曲冷凌霜 提交于 2021-02-12 05:37:06
Django contenttypes 应用 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中。 每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。比如我在应用app01的models.py中创建表 class Electrics(models.Model): pass 。从数据库查看ContentType表,显示如下: id app_label model … admin, auth等内置应用… … 5 contenttypes contenttype 6 app01 electrics 那么这个表有什么作用呢?这里提供一个场景,网上商城购物时,会有各种各样的优惠券,比如通用优惠券,满减券,或者是仅限特定品类的优惠券。在数据库中,可以通过外键将优惠券和不同品类的商品表关联起来: from django.db import models class Electrics (models.Model): """ id name 1 日立冰箱 2 三星电视 3 小天鹅洗衣机 """ name = models.CharField(max_length= 32) class Foods (models.Model): """ id name 1 面包 2

django的contenttype表

我的未来我决定 提交于 2021-02-12 05:24:23
https://blog.csdn.net/aaronthon/article/details/81714496 这篇文章已经非常详细了,供自己以后忘了...回看...... 总结: 当一张表和多个表FK关联,并且多个FK中只能选择其中一个或其中n个时,可以利用contenttype,固定用三个字段                content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE) # 关联course or degree_course object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') # obj.content_object获取关联对象    price_policy = GenericRelation("PricePolicy") # GenericForeignKey反向查询,不会生成表字段 obj.price_policy.all()获取所有关联对象    实际用法 from .models import PricePolicy p=PricePolicy.objects.get(pk=1) p.content_object

django自带的contentType表

瘦欲@ 提交于 2021-02-12 04:59:56
    通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自: https://blog.csdn.net/aaronthon/article/details/81714496     contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中。     models.py文件的表结构写好后,通过makemigrations和migrate两条命令迁移数据后,在数据库中会自动生成一个django_content_type表,比如我们有在models.py中写了这么几张表: from django.db import models class Electrics(models.Model): """ id name 1 日立冰箱 2 三星电视 3 小天鹅洗衣机 """ name = models.CharField(max_length=32) class Foods(models.Model): """ id name 1 面包 2 烤鸭 """ name = models.CharField(max_length=32) class Clothes(models.Model): name = models.CharField(max_length=32) class