django之content_type
什么是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 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(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 models def 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')
django之content_type的更多相关文章
- Django 组件content_type
content type: django内置组件,这个组件帮忙做连表操作(混搭连表) 适用场景:适用于一张表与多张表同时做关联的时候.直接导入就可以使用了. 关联数据库所有的表:可以快速插入数据,并且 ...
- django model content_type 使用
一.关于content_type 使用 1.引入模块在models from django.db import models from django.contrib.contenttypes.mode ...
- 11.关于django的content_type表
****** Django的contenttype表中存放发的是app名称和模型的对应关系 contentType使用方式 - 导入模块 from django.contrib.contenttype ...
- Django Rest framework 之 解析器
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- django1.7 配置demo教程(环境搭建)
近期又用到django做个简单项目,1年多没用过了有些手生,按理说没啥问题吧 以下是一个简单的环境搭建demo过程: 前提条件:准备了python2.7已经安装 1.搭建django环境下载 http ...
- Django content_type 简介及其应用
在网上看到 django ORM 有一个 content_type 字段表的应用,这张表不是我们通过建立model类添加的,而是django自动帮我们生成的,具体的作用先简单的举个例子给大家介绍一下. ...
- $Django content_type组件 缓存组件
1 content_type组件(只能方便插入添加) 需求:课程,学位课(不同的课程字段不一样),价格策略 #免费课 class Free_classes (models.Model): id = ...
- Django中的content_type表
models.py from django.db import models from django.contrib.contenttypes.models import ContentType # ...
- Django
一.Django 简介 Django 是一个由 Python 写成的开放源代码的 Web 应用框架.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统) ...
随机推荐
- poj2635(千进制取模+同余模定理)
题目链接:https://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 题意:给出大数s (s<=10100) ,L (< ...
- vm 克隆一台新机器启动网卡报错:device eth0 does not seem to be present, delaying initialization
解决方案: 1. vi /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0的配置文件里保存了以前的MAC地址,就把这一行删除掉在重启网卡 2. ...
- Linux 下 mysql的基本配置
Linux 下 mysql的基本配置 2013年02月27日 ⁄ MySQL ⁄ 共 3000字 ⁄ 暂无评论 ⁄ 被围观 2,483 views+ 1. Linux mysql安装: $ yu ...
- [CodeForces_618C]Constellation
题目链接 http://codeforces.com/problemset/problem/618/C 题意 给二维平面一些点的坐标,保证不是所有点都在一条直线上,各点不重合,输出三个点的id,满足其 ...
- 项目总结14:Windows远程连接redis(cmd指令或PowerShell指令)
1-确认远程的redis服务器是否允许被远程连接,已redis server安装在阿里云ECS上为例 1-1-确认在阿里云控制台,开放了端口6379和允许访问的IP 1-2-确认在服务器上安装redi ...
- vm参数配置的理解
-denv=dev表示将服务器的级别 设置为开发环境 所有错误的内容都会打印在控制台上 //The-Denv = dev statement creates a system property nam ...
- java命令启动jacocoagent及生成报告
启动jacocoagent: java -Xms1024m -Xmx2048m -XX:-UseGCOverheadLimit -Ddruid.keepAlive=true -javaagent:/h ...
- android apk 反编译过程
一.准备必要的工具 apktool (资源文件获取) dex2jar(源码文件获取) jd-gui (源码查看) 以上三个文件的下载地址为:https://download.csdn.net/dow ...
- hdu 1059 (多重背包) Dividing
这里;http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意是有价值分别为1,2,3,4,5,6的商品各若干个,给出每种商品的数量,问是否能够分成价值相等的 ...
- 778A String Game
A. String Game time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...