django——contentType组件

contentType组件

django内置的一个组件,方便我们快速的进行连表操作,查询,插入数据

使用方法:

在course表中:
            policy = GenericRelation(‘PricePolicy‘, object_id_field=‘course_id‘, content_type_field=‘table_id‘)

在价格策略表中:
        content_obj = GenericForeignKey(‘table_id‘,‘course_id‘)
        --加的这两个字段都不会在数据库中生成,它只是用来查询,插入

models—数据库

from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation

# 专题课表
class Course(models.Model):
    title = models.CharField(max_length=32)
    # 不需要做数据库迁移,不会在数据表中生成,是用来方便查询
    policy=GenericRelation(‘PricePolice‘,object_id_field=‘course_id‘,content_type_field=‘table_id‘)

    def __str__(self):
        return self.title

# 学位课表
class DegreeClass(models.Model):
    title = models.CharField(max_length=32)
    policy = GenericRelation(‘PricePolice‘, object_id_field=‘course_id‘, content_type_field=‘table_id‘)

    def __str__(self):
        return self.title

# 轻课表
class LightCourse(models.Model):
    title = models.CharField(max_length=32)
    policy = GenericRelation(‘PricePolice‘, object_id_field=‘course_id‘, content_type_field=‘table_id‘)

    def __str__(self):
        return self.title

# 价格策略表
class PricePolice(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()
    # 如果表id:字段名叫:content_type,课程id字段名叫object_id GenericForeignKey就不需要传参数
    # 也不需要做数据库迁移,也不会在数据库生成字段,这个只用来做查询和插入
    # 如果保存的时候,只需要传content_obj这个字段,内部会自动传入table_id,course_id
    content_obj = GenericForeignKey(‘table_id‘, ‘course_id‘)
    # PositiveIntegerField----正整数

view——视图层

from django.shortcuts import render, HttpResponse
from django.contrib.contenttypes.models import ContentType
from app01 import models
# def test(request):# 为django专题课,创建三个价格策略# course = models.Course.objects.get(pk=1)# 老方法:很麻烦# table_id = ContentType.objects.get(model=‘course‘)# ret = models.PricePolice.objects.create(price=9.9, period=‘1个月‘, table_id=table_id, course_id=course.pk)# ret = models.PricePolice.objects.create(price=19.9, period=‘2个月‘, table_id=table_id, course_id=course.pk)# ret = models.PricePolice.objects.create(price=29.9, period=‘3个月‘, table_id=table_id, course_id=course.pk)

# 为django专题课,创建三个价格策略# 新方法:使用ContentType插入# course=models.Course.objects.get(pk=2)# ret=models.PricePolice.objects.create(price=‘13.3‘,period=‘1个月‘,content_obj=course)# ret=models.PricePolice.objects.create(price=‘23.3‘,period=‘2个月‘,content_obj=course)# ret=models.PricePolice.objects.create(price=‘33.3‘,period=‘3个月‘,content_obj=course)

# 给学位课加一个价格策略# 新方法:使用ContentType插入# degree_course = models.DegreeClass.objects.get(pk=1)# ret = models.PricePolice.objects.create(price=‘188888‘, period=‘5个月‘, content_obj=degree_course)

# 删除# course=models.PricePolice.objects.get(course_id=1).delete()

# 查询所有的价格策略,并且显示对应的课程名称# ret = models.PricePolice.objects.all()# for i in ret:#     print(type(i.content_obj))#     print(i.content_obj)

# 通过课程id,获取课程信息和价格策略# 查询django所有的价格策略# course=models.Course.objects.get(pk=2)# course_police=course.policy.all()# for i in course_police:#     print(type(i))#     print(i.period)

# return HttpResponse(‘ok‘)

原文地址:https://www.cnblogs.com/cao123/p/10153157.html

时间: 2024-11-09 05:10:39

django——contentType组件的相关文章

django ContentType组件

一,需求 给商品创建优惠券: 看看下面表结构: class Food(models.Model): """ id name 1 面条 """ name = models.CharField(max_length=32) def __str__(self): return self.name class Fruit(models.Model): """ id name 1 苹果 """ n

Django ContentType组件 需求

ContentType组件 遇到这一张表要跟多张表进行外键关联的时候~我们Django提供了ContentType组件~ ContentType是Django的内置的一个应用,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中. 当我们的项目做数据迁移后,会有很多django自带的表,其中就有django_content_type表,我们可以去看下~~~ ContentType组件应用: -- 在model中定义ForeignKey字段,并关联到ContentT

contenttype组件、Django缓存机制以及跨域请求

1 昨日回顾 版本控制 *** (1)url=127.0.0.1/course/?version=v100000 1 versioning_class=QueryParameterVersioning 'VERSION_PARAM':'version', 'DEFAULT_VERSION':'v2', 'ALLOWED_VERSIONS':['v1','v2'] 2 配置成全局:在setting里:QueryParameterVersioning (2)重要(以后建议用这种):127.0.0.1

Django之ContentType组件

一.需求 给商品创建优惠券: 看看下面表结构: class Food(models.Model): """ id name 1 面条 """ name = models.CharField(max_length=32) def __str__(self): return self.name class Fruit(models.Model): """ id name 1 苹果 """ n

Django框架(二十七)—— ContentType组件

目录 ContentType组件 一.什么是ContentType组件 二.使用ContentType 三.使用场景总结 ContentType组件 一.什么是ContentType组件 contentType是Django内置的组件,可以方便我们快速的连表查询. 可以追踪项目中所有app和model的对应关系,并记录在ContentType表中 models.py文件的表结构写好后,通过makemigrations和migrate两条命令迁移数据后,在数据库中会自动生成一个django_con

【Django】ContentType组件

目录 理解 表结构 使用 @ 好,现在我们有这样一个需求,我们的商城里有很多的商品,然而节日要来了,我们要搞活动. 那么,我们就要设计优惠券,优惠券都有什么类型呢?满减的.折扣的.立减的.等等等... 我们对应着活动类型,对某类商品设计优惠卷,比如: 家电是一类商品.食物是一类商品,那么我们就可以设计家电折扣优惠券,以及食物满减优惠券等. 所以,我们一顺手,表结构就出来了: from django.db import models is_true = {'null': True, 'blank'

【Django】ContentType组件 -- 2019-08-08 18:03:22

目录 理解 表结构 使用 原文: http://106.13.73.98/__/72/ @ 好,现在我们有这样一个需求,我们的商城里有很多的商品,然而节日要来了,我们要搞活动. 那么,我们就要设计优惠券,优惠券都有什么类型呢?满减的.折扣的.立减的.等等等... 我们对应着活动类型,对某类商品设计优惠卷,比如: 家电是一类商品.食物是一类商品,那么我们就可以设计家电折扣优惠券,以及食物满减优惠券等. 所以,我们一顺手,表结构就出来了: from django.db import models i

qhfl-2 ContentType组件

现在我们有这样一个需求~我们的商城里有很多的商品~~节日要来了~我们要搞活动~~ 那么我们就要设计优惠券~~优惠券都有什么类型呢~~满减的~折扣的~立减的~~ 我们对应着我们活动类型~对我们的某类商品设计优惠券~~比如~~ 家电是一类商品~~食物是一类商品~那么我们可以设计家电折扣优惠券~~以及食物满减优惠券等~ 那么我们看表结构怎么设计~~ from django.db import models class Appliance(models.Model): """ 家用电

Django ==> Form 组件

Django ==> Form 组件 目录: 1.基本使用 2.form中字段和插件 3.自定义验证规则 4.动态加载数据到form中 Action: 1.基本使用 django 中的Form组件有一下功能: 1.生成html标签 2.验证用户数据(显示错误信息) 3.html form 提交保留上次提交数据 4.初始化页面显示内容 要使用 form 类,首先需要创建这个类,方法如下: from django.forms import Form from django.forms import