zoukankan      html  css  js  c++  java
  • django中的ContentType使用

    使用背景

      最近设计表的时候遇到一个问题,有两门课程  一门专业课,一门学位课,我们按照时间长度来进行售卖,比如专业课一个月19元,两个月35元,三个月50元。

    可以这么做但是领导不让我这么设计。。。。。。

    所以就想着用第三章表来实现需求

    然后就想着这么设计但是这么设计我在查表的时候实在是太麻烦了,后来发现了ContentType这个神器啊:

    这是Django中自带的ContentType这张表中就有我创建的那三张表(学位课表,专业课表,价格策略表),所以表结构如下

     表的创建

    from django.db import models
    
    # Create your models here.
    
    
    from django.db import models
    from django.contrib.contenttypes.models import ContentType
    from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
    
    
    class DegreeCourse(models.Model):
        name = models.CharField(max_length=32)
    
    
    class Course(models.Model):
        name = models.CharField(max_length=32)
    
        # 数据库不生成,只用于链表查询
        policy_list = GenericRelation("PricePolicy")
    
    
    class PricePolicy(models.Model):
        content_type = models.ForeignKey(ContentType)
        object_id = models.PositiveIntegerField()
    
        # 不在数据库中生成,只用于帮助你做数据操作
        content_object = GenericForeignKey('content_type', 'object_id')
    
        period = models.CharField(max_length=32)
        price = models.FloatField()
    model.py

     

    def index(request):
        course_obj = Course.objects.get(id=2)
        # content_obj 是GenericForeignKey 便于操作直接赋予对象即可
        PricePolicy.objects.create(period='110', price=9.9, content_object=course_obj)
        PricePolicy.objects.create(period='120', price=19.9, content_object=course_obj)
        PricePolicy.objects.create(period='130', price=29.9, content_object=course_obj)
        price_list = PricePolicy.objects.all()
    
        for priceplicy in price_list:
            # 取出一个个的models对象 . content_obj 就可以去到相对应的
            print(priceplicy.content_obj.name,priceplicy.price, priceplicy.period)
    
        course_obj = Course.objects.get(id=1)
        obj = course_obj.policy_list.filter(id=3)
        objs = course_obj.policy_list.all()
        
        print(obj)
        return HttpResponse('ok')
    views.py
    GenericForeignKey, GenericRelation 
    都不会在数据库中生成字段,只是方便查询

  • 相关阅读:
    SharePoint开发中可能用到的各种Context(上下文)
    SharePoint 2013中的视频体验增强(1)——把大象装进冰箱
    SharePoint 2013之Office Web Apps Server(1)
    Office 2013 (Wave 15)来了
    SharePoint 2013新特性:图像呈现形式(Image Rendition)
    SharePoint 2013之Office Web Apps Server(2)
    在自己的代码中获取SharePoint的存储占用情况
    Showing Hyperlink Cues with CSS
    (翻译) 价目表:实例和最佳策略
    用CSS制作大背景网站,以及80个大背景图片网站。
  • 原文地址:https://www.cnblogs.com/Stay-J/p/8810049.html
Copyright © 2011-2022 走看看