我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Django之content_type

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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')

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Django之content_type

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Django之content_type

什么是content type:django内置的一个组件,这个组件帮忙做连表的操作。(混搭连表)适用场景:适用于一张表与多张表同时做关联的时候。直接导入就可以使用了。关联数据库说有的表;让我们可以快速插入数据,并且用反向查找能快速查找到数
2023-01-30

Django之ModelForm

在前面有篇博客,我写了一个叫forms组件的东西,可以帮助我们完成校验数据、渲染标签功能和在前端页面局部刷新功能,功能封装的已经很好了,当时已经很开心了。但万万没想到,还有比它功能更强大的东西。forms组件只能渲染出type=text类型
2023-01-30

Django之 HelloWorld

1、C:\Users\andy>django-admin startproject sundyblog ## 创建项目 C:\Users\andy>cd sundyblog2、C:\Users\andy\sundyblog>py
2023-06-05

Django之ORM

ORM即Object Relational Mapping(对象关系映射)对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言
2023-01-30

Django之Template

Template模板的使用帮助我们将数据对应的插入到html文档中显示给用户。一.Template和Context对象t = Template('My name is {{ name }}.')c = Context({'name': 's
2023-01-30

Django之FBV&CBV

CBV与FBV是django视图中处理请求的两种方式FBV也就是function base views,字面意思函数基础视图,使用函数的方式处理请求url分发中添加的参数为视图处理函数名,path('login/',views.login
2023-01-30

Django之中间件

中间件介绍 中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。 但是由于其影响的是全局,所以需要谨慎使用,使用不
2023-01-30

Django之视图层

一、视图函数  一个视图函数,简称视图,是一个简单的python函数,接收web请求并返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误等。在函数中必须写一个request的参数,然后必须要有返回值,中间的逻辑随便
2023-01-30

Django之路由层

url配置就像Django所支撑网站的目录。它的本质是url与要被该url调用的视图函数之间的映射表;通过这个映射表可以告知Django,对于客户端发来的某个url该执行那些代码。  一、简单的路由配置from django.urls im
2023-01-30

Django之Form组件

一 Form介绍    我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。  与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不
2023-01-30

Django之Cookie和Sessio

Cookiecookie的由来大家都知道HTTP协议是无状态的.无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况.一句有意思的话来
2023-01-30

Django之模板层

在一个项目里面有一个专门放模板的文件夹Templates,有一个专门放视图的文件views,而且我们大多给浏览器响应的都应该是一个完整的页面,也就是读取的是一个HTML文件,然后再返回给浏览器。但我们在写HTML文件时,里面关于要从数据库拿
2023-01-30

Django之auth组件

一、Auth模块是什么  django内置的用户认证系统 ,可以快速 的实现,登录,注销,修改密码...二、Auth用法:  1、先创建超级用户 :    python3 manage.py createsuperuser;输入用户名,邮箱
2023-01-30

Django之forms组件

一、校验数据功能  我们在写注册页面时,之前只是提交了数据,然后就保存了数据,后端根本就没有对数据进行校验,比如价格写的不是纯数字也让保存,这肯定是不行的,在前端是可以校验的,但我们不能只依靠前端验证,万一前端不校验,那整个过程就没校验了,
2023-01-30

Django基础之(十)DRF

简介官方文档RequirementsREST framework requires the following:Python (2.7, 3.4, 3.5, 3.6, 3.7)Django (1.11, 2.0, 2.1)The follo
2023-01-31

Django之路由系统

URL配置(URL.conf)就像Django所支撑网站的目录,它的本质是URL与要为该URL调用的视图函数之间的映射表.我们就是以这种方式告诉Django,遇到哪个URL的时候,要对应执行哪个函数.URLconf配置基本格式:from d
2023-01-30

Django之频率组件

一、频率简介为了控制用户对某个url的请求 的频率,比如 ,一分钟以内,只能访问三次二、自定义频率类,自定义频率规则自定义的逻辑(1)取出访问者的ip(2)判断当前ip不在访问字典里,添加进去,并且直接返回True,表示第一次访问,在字典里
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录