什么是content type:django内置的一个组件,这个组件帮忙做连表的操作。(混搭连表)

适用场景:适用于一张表与多张表同时做关联的时候。直接导入就可以使用了。

关联数据库说有的表;让我们可以快速插入数据,并且用反向查找能快速查找到数据。

models.py文件建立表

from django.db import models# Create your models here.
from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation
from django.contrib.contenttypes.models import ContentTypeclass 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(ContentType,verbose_name='关联的表名称')object_id=models.IntegerField(verbose_name='关联的表中的数据行的ID')content_object=GenericForeignKey('content_type','object_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)
"""

views.py文件,进行数据插入和查看

from django.shortcuts import render,HttpResponse# Create your views here.
from app01 import modelsdef test(request):# 1 为学位课python添加一个价格策略:一个月9.9# obj1=models.DegreeCourse.objects.filter(title='python').first()# models.PricePolicy.objects.create(price=9.9,period=30,content_object=obj1)#
    # obj1 = models.DegreeCourse.objects.filter(title='python').first()# models.PricePolicy.objects.create(price=19.9, period=60, content_object=obj2)#
    # obj1 = models.DegreeCourse.objects.filter(title='python').first()# models.PricePolicy.objects.create(price=29.9, period=90, content_object=obj3)# # 2 为学位课rest framework添加一个价格策略:一个月9.9# obj1=models.Course.objects.filter(title='rest framework').first()# models.PricePolicy.objects.create(price=9.9,period=30,content_object=obj1)#
    # obj2 = models.Course.objects.filter(title='rest framework').first()# models.PricePolicy.objects.create(price=19.9, period=60, content_object=obj2)#
    # obj3 = models.Course.objects.filter(title='rest framework').first()# models.PricePolicy.objects.create(price=29.9, period=90, content_object=obj3)# 3 根据课程的ID获取课程,并获取该课程的所有价格策略course=models.Course.objects.filter(id=1).first()price_policys=course.price_policy_list.all()print(price_policys)return HttpResponse('ok')

转载于:https://www.cnblogs.com/zycorn/p/10020490.html

Django之content_type相关推荐

  1. python response.json()报错_Django JsonResponse json格式报错 解决Django响应JsonResponse返回json格式数据报错问题...

    想了解解决Django响应JsonResponse返回json格式数据报错问题的相关内容吗,彭世瑜在本文为您仔细讲解Django JsonResponse json格式报错的相关知识和一些Code实例 ...

  2. openstack页面自定义插件使用详解(django、ajax、post)(zTree为例)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

  3. Django源码分析4:staticfiles静态文件处理中间件分析

    django源码分析 本文环境python3.5.2,django1.10.x系列1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化, ...

  4. Django博客系统注册(图形验证码接口设计和定义)

    1. 准备captcha包(该包用于生成图形验证码) 1.将生成图片验证码的库复制到新建的libs包中. 2.安装Python处理图片的库 这儿可能会变红显示错误: 解决方案:在虚拟环境中安装Pill ...

  5. Django视图之HttpRequest对象和HttpResponse对象

    五.HttpRequest对象 回想一下,利用HTTP协议向服务器传参有几种途径? 提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取: 查询字 ...

  6. Django REST framework API 指南(2):响应

    Django REST framework API 指南(1):请求 Django REST framework API 指南(2):响应 Django REST framework API 指南(3 ...

  7. django使用auth模块进行身份认证

    https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests djang ...

  8. Django REST framework API 指南(11):序列化·关系

    官方原文链接 本系列文章 github 地址 转载请注明出处 Serializer 关系 关系字段用于表示模型关系. 它们可以应用于 ForeignKey,ManyToManyField 和 OneT ...

  9. Django后台定制

    2019独角兽企业重金招聘Python工程师标准>>> 自定制Admin 如果只是在admin中简单的展示及管理模型,那么在admin.py模块中使用admin.site.regis ...

最新文章

  1. 代码实战 | 用LeGO-LOAM实现地面提取
  2. mybatis 分页需要的jar包下载_064、MyBatis
  3. cout的输出格式初探3
  4. Hibernate反向生成映射文件点击Hibernate reserve Engineering的时候没反应的解决方法
  5. mmap 和 shm 区别
  6. 家里在一二线城市有很多套房是什么体验?答案太颠覆!
  7. Java面试知识点:多态、内部类
  8. Mysql在可视化工具navicat中如何解决输入小数变整数的问题,(改变小数位数)
  9. 放弃机器学习,Python 如何进行物体检测?
  10. 为什么程序员如此“嫌弃”主干开发模式?
  11. [转载] Python 学习 - Numpy
  12. ubuntu wireshark找不到网卡及开启IP转发
  13. 计算机组成原理-检错码、纠错码
  14. SpringMVC 访问html页面乱码
  15. brew - 切换为国内源
  16. (Tiled官方文档翻译)第四节:对象的编辑和使用
  17. 基于JAVA的网上花店销售系统的设计与实现(附:源码 论文 sql文件)
  18. 优秀的图文识别开源项目PandaOCR
  19. Word生成图表(柱状图、线形图等,并附带表格展示数值)
  20. 12.22 @烤仔建工 | 烤仔家具城建设中……

热门文章

  1. JVM调优:运行参数,内存模型,mat、jps、jstat、jmap、jstack、jvisualvm工具的使用
  2. linux实用的脚本:xcall(同步执行命令)与xsync(同步文件目录)
  3. Linkis1.0用户使用文档:JAVA和SCALA调用Linkis的接口示例代码
  4. 【收藏】firewalld开放端口
  5. loadrunner脚本设计:检查点(断言)及web_submit_data函数使用示例
  6. linux 产生0~2之间的随机数
  7. 【视频】vue组件之$emit父子组件间值的传递
  8. Linux service指令
  9. window下的host路径
  10. Qt 6的Qt 3D会是什么样?