zoukankan      html  css  js  c++  java
  • python之路_django之contenttype介绍

    表结构如下:

    class DegreeCourse(models.Model):
        """学位课程"""
        name = models.CharField(max_length=128, unique=True)
                
        # 忽略,用于GenericForeignKey反向查询,不会生成表字段,切勿删除
        degreecourse_price_policy = GenericRelation("PricePolicy")
    
        def __str__(self):
            return self.name
    
            
    class Course(models.Model):
        """课程"""
        name = models.CharField(max_length=128, unique=True)
    
        # 用于GenericForeignKey反向查询,不会生成表字段,切勿删除
        price_policy = GenericRelation("PricePolicy")
        
    
    class PricePolicy(models.Model):
        """价格与有课程效期表"""
        content_type = models.ForeignKey(ContentType)      #ContentType为django提供的包含app名称和表名字段的表
        object_id = models.PositiveIntegerField()          #某表中一条信息的对应id
        content_object = GenericForeignKey('content_type', 'object_id')
        price = models.FloatField()
            

    表操作介绍:

    # 添加方式一
    obj1 = models.DegreeCourse.objects.get(id=1)
    models.PricePolicy.objects.create(content_object=obj1,price=10)
            
    # 添加方式二
    id = ContentType.objects.get(app_name='app01',modelname="degreecourse").id
    models.PricePolicy.objects.create(content_type_id=id,object_id=1, price=10)
            
    # 正向查找
    price_list = models.PricePolicy.objects.all()
    for item in price_list:
        item.content_object
    
    # 反向查找
    clist = models.DegreeCourse.objects.all()
    for item in clist:
        item.degreecourse_price_policy.all()
  • 相关阅读:
    Ajax缓存的几种处理方式
    Day--1--网络协议
    Day4--js--递归各种大法渡难关
    你以为的BUG--BFC给你解决!
    Day3--js--可恶之变量声明提升大法.。。
    Day2--js--烧脑睿智循环的练习题
    ERwin创建逻辑模型
    ERwin入门
    Oracle存储过程由例子到理论
    oracle存储过程
  • 原文地址:https://www.cnblogs.com/seven-007/p/8483184.html
Copyright © 2011-2022 走看看