Django rest-framework框架-content-type
表结构讨论:
是用一张表价格策略表来记录两种不同的价格策略

content-type原理:

使用一张表来记录不同课程的价目,增加一行表名称
注释: 适用于多张表关联一张表的情况
会自动生成这种的结构:

content_type: Django内置的一个组件, 帮助开发者做连表操作
连表操作: 普通的又 ForeignKey,OneToOne, ManyToMany
高级连表操作: content_type 第一版: 普通方式来生成这种表关联
class Course(models.Model):
"""普通课"""
title = models.CharField(max_length=32) class DegreeCourse(models.Model):
"""学位课"""
title = models.CharField(max_length=32) class PricePolicy(models.Model):
"""价格策略"""
price = models.IntegerField()
period = models.IntegerField() table_name = models.CharField(verbose_name="关联的表名称")
object_id = models.CharField(verbose_name="关联的表中的数据行ID") 第二版: 利用contentype来做多表关联
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()
#关联到ContentType表
table_name = models.ForeignKey(ContentType, verbose_name="关联普通课表或者学位课表")
object_id = models.IntegerField(verbose_name="关联普通课表或者学位课表中的数据行ID") #1. 为学位课PYTHON全栈 添加一个价格策略 一个月 9.9
#obj = DegreeCourse.objects.filter(title="PYTHON全栈").first()
#obj.id
#cobj = ContentType.objects.filter(model = 'course').first()
#cobj.id
#PricePolicy.objects.create(price='9.9',period='30',content_type_id=cobj.id,object_id=obj.id)
#以上操作用下面代替
content_object = GenericForeignKey('content_type', 'object_id') # 添加view例子 def test(request):
#1. 为学位课PYTHON全栈 添加一个价格策略 一个月 9.9
obj1 = DegreeCourse.objects.filter(title="PYTHON全栈").first()
PricePolicy.objects.create(price=9.9,period='一个月',content_type=obj1) obj2 = DegreeCourse.objects.filter(title="PYTHON全栈").first()
PricePolicy.objects.create(price=39.9,period='二个月',content_type=obj2) obj3 = DegreeCourse.objects.filter(title="PYTHON全栈").first()
PricePolicy.objects.create(price=59.9,period='三个月',content_type=obj3) #2. 根据课程ID获取课程, 并获取该课程的所有价格策略
course = models.Course.objects.filter(id=1).first()
price_policys = course.price_policy_list.all() return HttpResponse("添加成功")
Django rest-framework框架-content-type的更多相关文章
- Django REST framework框架介绍和基本使用
Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...
- Django Rest framework 框架之认证使用和源码执行流程
用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...
- Django Rest Framework框架 ---- url控制器
Django Rest Framework框架 ---- url控制器
- web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝
web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...
- web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍
web前端Vue+Django rest framework 框架 生鲜电商项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...
- Django Rest framework 框架
一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...
- Django Rest Framework框架源码流程
在详细说django-rest-framework源码流程之前,先要知道什么是RESTFUL.REST API . RESTFUL是所有Web应用都应该遵守的架构设计指导原则. REST是Repres ...
- Django rest framework框架中有哪些组件
认证 权限(授权) 用户访问次数/频率限制 版本 解析器(parser) 序列化 分页 路由系统 视图 渲染器 认证 自定义认证的类 """ from rest_fram ...
- Django Rest framework 框架之解析器
解析器 序列化***** 请求数据进行校验 对queryset进行序列化处理 分页 路由 视图 渲染器
- Django rest framework框架——APIview源码分析
一.什么是rest REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP.其目标是为了创建具有良好扩展性的分布式系统. 可用一句话 ...
随机推荐
- python 设计模式之命令(Command)模式
#写在前面 也了解了不少设计模式了,他们都有一个通病,那就是喜欢把简单的东西复杂化.比如在不同的类中加个第三者.哈哈哈,简单变复杂是有目的的,那就是降低耦合度,增强可维护性,提高代码复用性,使代码变得 ...
- hystrix流程图收藏
最近在看张开涛的亿级流量的书,学习了一个新的防雪崩的功能hystrix,在学习这个功能的过程中,看了一些网站也温习了一些知识,例如double_check locking功能,还有cache的击穿作为 ...
- WGS84 2 GCJ-02
#include ; ) { x=-x; ff=; } cc=) ff=; ) ff=; } x=tt; ss=x; s2=x; tt=tt*tt; s2=s2*tt; ss=ss-s2* ) ss= ...
- avro-1.8.1 serialize BigDecimal and Short error fix.
1. create mysql table like CREATE TABLE `test` ( `a` ) ', `b` ,) DEFAULT NULL, `c` ,) DEFAULT NULL ) ...
- (十八)Centos之firewall 防火墙命令
如果你的系统上没有安装使用命令安装 #yum install firewalld //安装firewalld 防火墙 开启服务 # systemctl start firewalld.service ...
- iOS-UILabel的使用
常用属性UILabel //显示的文字 @property(nonatomic,copy) NSString *text; //字体 @property(nonatomic, ...
- LSTM改善RNN梯度弥散和梯度爆炸问题
我们给定一个三个时间的RNN单元,如下: 我们假设最左端的输入 为给定值, 且神经元中没有激活函数(便于分析), 则前向过程如下: 在 时刻, 损失函数为 ,那么如果我们要训练RNN时, 实际上 ...
- EOS 资源汇总
EOS 资源汇总 A curated list of EOS Ecosystem by [SuperONE](https://superone.io/) EOS 主网 超级节点 https:/ ...
- PCL学习(三) SAC-IA 估记object pose
SAC-IA是基于RANSAC算法的对齐算法 通过降采样提高法向计算.FPFH特征的计算 最后通过SAC-IA计算得到对齐的旋转和平移 #include <Eigen/Core> #inc ...
- 深入理解 Css3 的 clip-path
clip-path CSS 属性可以创建一个只有元素的部分区域可以显示的剪切区域.区域内的部分显示,区域外的隐藏.clip-path属性代替了现在已经弃用的剪切 clip属性.clip-path的属性 ...