content_type
1.作用
将app名称与其中表关系进行保存
在models创建表时,关联到ContentType并不会产生实际的字段
2.使用
在models中代码
from django.db import models from django.contrib.contenttypes.fields import GenericRelation # Create your models here. class Courser(models.Model): title = models.CharField(max_length=32) #这里的object_id_field有默认值object_id,content_type_field有默认值content_type #如果PricePolicy的字段名不是和默认值一样,那就要和下面一样,和PricePolicy表里的字段名对上 #不需要做数据库迁移,不会生成字段,只是方便用来查询 policy = GenericRelation('PricePolicy', object_id_field='course_id', content_type_field='table_id') def __str__(self): return self.title class DegreeCourser(models.Model): title = models.CharField(max_length=32) policy = GenericRelation('PricePolicy', object_id_field='course_id', content_type_field='table_id') def __str__(self): return self.title from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.models import ContentType class PricePolicy(models.Model): price = models.DecimalField(max_digits=8, decimal_places=2) period = models.CharField(max_length=32) # 强调,如果是外部导入的表,不能带引号 # 表的id table_id = models.ForeignKey(to=ContentType) # 课程id course_id = models.IntegerField() # PositiveIntegerField()---正整数 # 如果表id字段名叫:content_type,课程id字段名叫:object_id,GenericForeignKey()就不需要传参 # 不需要做数据库迁移,也不会在数据库生成字段,只用来查询和插入 # 如果保存的时候,只需要传content_obj这个字段,内部自动会保存table_id,course_id content_obj = GenericForeignKey('table_id', 'course_id')
在views中代码
from django.shortcuts import render,HttpResponse,reverse,redirect from django.contrib.contenttypes.models import ContentType # Create your views here. from app01 import models def test(request): #为django专题课添加三个价格策略 # course=models.Courser.objects.get(pk=1) # # table_id=ContentType.objects.get(model='courser') # ret=models.PricePolicy.objects.create(price=9.9,period='1个月',table_id=table_id,course_id=course.pk) # ret=models.PricePolicy.objects.create(price=9.9,period='2个月',table_id=table_id,course_id=course.pk) # ret=models.PricePolicy.objects.create(price=9.9,period='3个月',table_id=table_id,course_id=course.pk) #使用contenttype插入,其实就是根据course,查出course.pk,course所在表的表名,本质上还是做了上面的操作 # course = models.Courser.objects.get(pk=2) # ret=models.PricePolicy.objects.create(price=9.9,period='1个月',content_obj=course) # ret=models.PricePolicy.objects.create(price=19.9,period='2个月',content_obj=course) # ret=models.PricePolicy.objects.create(price=29.9,period='3个月',content_obj=course) # #给学位课加一个价格策略 # degre_course=models.DegreeCourser.objects.get(pk=1) # models.PricePolicy.objects.create(price=19999.9,period='5个月',content_obj=degre_course) #查询所有价格策略,并且显示对应的课程名称 # ret=models.PricePolicy.objects.all() # for i in ret: # print(type(i.content_obj)) # print(i.content_obj) #查询Django所有的价格策略 course=models.Courser.objects.get(pk=1) course_policy=course.policy.all() for i in course_policy: print(i.period) return HttpResponse('ok')
content_type的更多相关文章
- Django content_type 简介及其应用
在网上看到 django ORM 有一个 content_type 字段表的应用,这张表不是我们通过建立model类添加的,而是django自动帮我们生成的,具体的作用先简单的举个例子给大家介绍一下. ...
- $Django content_type组件 缓存组件
1 content_type组件(只能方便插入添加) 需求:课程,学位课(不同的课程字段不一样),价格策略 #免费课 class Free_classes (models.Model): id = ...
- AI-跨域、垃圾回收、content_type组见、接口处理
AI-跨域.垃圾回收.content_type组见.接口处理 跨域 为什么有跨域?什么时候遇见的?答:由于浏览器的同源策略 阻止ajax请求 不阻止src请求:在测试时,项目上线后不会遇见跨域.源:协 ...
- 11.8Django中的组件content_type
2018-11-8 18:59:11 在Django中已经有一个contenttype这个组件,并且在python manage.py makemigrations 和migrate的时候,一起在数据 ...
- django之content_type
什么是content type:django内置的一个组件,这个组件帮忙做连表的操作.(混搭连表) 适用场景:适用于一张表与多张表同时做关联的时候.直接导入就可以使用了. 关联数据库说有的表:让我们可 ...
- 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中的content_type表
models.py from django.db import models from django.contrib.contenttypes.models import ContentType # ...
随机推荐
- [转]linux 调用动态库so文件
记录一个面试被问到的问题. extern 有什么用途? 除了多文件共享全局变量外还有呢? extern "C" 的功能? 我想看完这篇文章就可以知道第三个问题了. 关于动态调用动态 ...
- 腾讯云极速配置NodeJS+LNMP运行环境
版权声明:本文由吴逸翔原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/848754001487150669 来源:腾云阁 h ...
- [原]Jenkins(十一)---jenkins使用管理员admin创建用户和分配权限
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...
- 【CF587F】Duff is Mad AC自动机+分块
[CF587F]Duff is Mad 题意:给出n个串$s_1,s_2..s_n$,有q组询问,每次给出l,r,k,问你编号在[l,r]中的所有串在$s_k$中出现了多少次. $\sum|s_i|, ...
- nginx负载均衡(反向代理)
6,安装nginx 6.1 依赖库安装 要安装在root根目录里,不要装在虚拟环境里面 yum install gcc-c++ pcre pcre-devel zlib zlib-devel ope ...
- Linux环境变量与文件查找
作业: 找出/etc目录下所有以.list结尾的文件 代码:locate /etc/\*.list sudo find /etc/ -name \*.list
- API(二)之Requests and Responses
这一部分可以让返回的api信息以两种格式呈现:.json和.api REST框架的核心部分.我们来介绍几个基本的组成部分. Request objects REST框架引入了Request对象来扩展常 ...
- Kindle2018 一周使用报告
使用2018年年末刚刚发布的KPW有一周时间了,可以借这个机会来对这部设备做一个使用报告了. 那咱们就参考如下描述吧: 1.轻薄便携:6英寸的屏幕,11.6厘米*16.7厘米的机身尺寸,加上仅有8.2 ...
- {03--CSS布局设置} 盒模型 二 padding bode margin 标准文档流 块级元素和行内元素 浮动 margin的用法 文本属性和字体属性 超链接导航栏 background 定位 z-index
03--CSS布局设置 本节目录 一 盒模型 二 padding(内边距) 三 boder(边框) 四 简单认识一下margin(外边距) 五 标准文档流 六 块级元素和行内元素 七 浮动 八 mar ...
- 【每日一题】 uva-232 模拟+输出要求很严格
https://cn.vjudge.net/problem/UVA-232 uva的题,结尾不能多\n,空格什么的 反正就是个中型模拟,题目多读就行 #define _CRT_SECURE_NO_WA ...