表结构讨论:

是用一张表价格策略表来记录两种不同的价格策略

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的更多相关文章

  1. Django REST framework框架介绍和基本使用

    Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...

  2. Django Rest framework 框架之认证使用和源码执行流程

    用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...

  3. Django Rest Framework框架 ---- url控制器

    Django Rest Framework框架 ---- url控制器

  4. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

  5. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  6. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

  7. Django Rest Framework框架源码流程

    在详细说django-rest-framework源码流程之前,先要知道什么是RESTFUL.REST API . RESTFUL是所有Web应用都应该遵守的架构设计指导原则. REST是Repres ...

  8. Django rest framework框架中有哪些组件

    认证 权限(授权) 用户访问次数/频率限制 版本 解析器(parser) 序列化 分页 路由系统 视图 渲染器 认证 自定义认证的类 """ from rest_fram ...

  9. Django Rest framework 框架之解析器

    解析器 序列化***** 请求数据进行校验 对queryset进行序列化处理 分页 路由 视图 渲染器

  10. Django rest framework框架——APIview源码分析

    一.什么是rest REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP.其目标是为了创建具有良好扩展性的分布式系统. 可用一句话 ...

随机推荐

  1. vue-cli及vue-router

    1.单文件组件 (1)问题:    使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: ‘#container ‘}) 在每个页面内指定一个容器元素.当在更复杂的项 ...

  2. spring (反射+代理+DI+AOP)

    spring  https://baijiahao.baidu.com/s?id=1620606848227713760&wfr=spider&for=pc 反射 https://bl ...

  3. python 过滤 b'及提取 cmd命令返回值

    #!/usr/bin/env python # -*- coding:utf-8 -*- import subprocess import datetime plist = [] p = subpro ...

  4. 好用的开源SVN仓库

    1.地址 https://svnbucket.com/#/projects 2.简单注册使用即可

  5. ALV 颜色设置(行,列,单元格)

    [转自:https://www.cnblogs.com/mingdashu/p/color_alv.html] BCALV_EDIT_03 http://blog.sina.com.cn/s/blog ...

  6. MySQL高性能优化指导思路

    MySQL架构图: 连接池组件.管理服务和工具组件.SQL接口组件.查询分析器组件.优化器组件.缓冲组件.插件式存储引擎.物理文件: 1.连接层:主要完成一些类似于连接处理,授权认证及相关的方案: 2 ...

  7. 【Leetcode_easy】599. Minimum Index Sum of Two Lists

    problem 599. Minimum Index Sum of Two Lists 题意:给出两个字符串数组,找到坐标位置之和最小的相同的字符串. 计算两个的坐标之和,如果与最小坐标和sum相同, ...

  8. LSTM改善RNN梯度弥散和梯度爆炸问题

    我们给定一个三个时间的RNN单元,如下: 我们假设最左端的输入  为给定值, 且神经元中没有激活函数(便于分析), 则前向过程如下: 在  时刻, 损失函数为  ,那么如果我们要训练RNN时, 实际上 ...

  9. 01.轮播图之一 :scrollView 轮播

    接触的每个项目,都会用到轮播图的部分,轮播图都写了好多次,用过各种各样的方式写: 这篇总结的博客,我将分为几个篇幅写,希望写完这几篇博客之后,我能总结出自己写这个轮播的优缺和不同之处 scrollvi ...

  10. vmware虚拟机网络不通原因之一

    我是在华硕笔记本上安装的vmware workstation.而且我用虚拟机的网络模式喜欢选“桥接”模式. 最近在虚拟上做实验,打开虚拟机windows 2003后,网卡配置静态ip后显示状态正常,但 ...