zoukankan      html  css  js  c++  java
  • Django中的content_type表

    models.py

    from django.db import models
    from django.contrib.contenttypes.models import ContentType
    # Django已处理好的方法,帮忙做链表添加,查询
    from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
    
    
    class DegreeCourse(models.Model):
        """学位课程"""
        name = models.CharField(max_length=128, unique=True)
        course_img = models.CharField(max_length=255, verbose_name="缩略图")
        brief = models.TextField(verbose_name="学位课程简介", )
    
    
    class Course(models.Model):
        """专题课程"""
        name = models.CharField(max_length=128, unique=True)
        course_img = models.CharField(max_length=255)
    
        # 不会在数据库生成列,只用于帮助你进行查询
        policy_list = GenericRelation("PricePolicy")
    
    
    class PricePolicy(models.Model):
        """价格与有课程效期表"""
        content_type = models.ForeignKey(ContentType)  # 关联course or degree_course
        object_id = models.PositiveIntegerField()
    
        #不会在数据库生成列,只用于帮助你进行添加和查询
        content_object = GenericForeignKey('content_type', 'object_id')
    
    
        valid_period_choices = (
            (1, '1天'),
            (3, '3天'),
            (7, '1周'),
            (14, '2周'),
            (30, '1个月'),
            (60, '2个月'),
            (90, '3个月'),
            (180, '6个月'),
            (210, '7个月'),
            (540, '18个月'),
            (720, '24个月'),
        )
        valid_period = models.SmallIntegerField(choices=valid_period_choices)
        price = models.FloatField()
    View Code

     views.py

    from django.shortcuts import render, HttpResponse
    from django.contrib.contenttypes.models import ContentType
    from app01 import models
    
    # Create your views here.
    
    
    def test(request):
        # 1.自己写入数据
        # models.PricePolicy.objects.create(
        #     valid_period=7,
        #     price=8.8,
        #     content_type=ContentType.objects.get(model="course"),
        #     object_id=1
        # )
        # 2.在models中添加GenericForeignKey方法,改变不大
        # models.PricePolicy.objects.create(
        #     valid_period=14,
        #     price=9.9,
        #     content_object=models.Course.objects.get(id=1)
        # )
        # 3.有GenericForeignKey方法,查询快捷
        # price = models.PricePolicy.objects.get(id=1)
        # print(price.content_object.name)
        # 4.GenericRelation方法帮助快捷跨表查询
        obj = models.Course.objects.get(id=1)
        for item in obj.policy_list.all():
            print(item.id, item.valid_period, item.price)
        return HttpResponse("ok")
    View Code

    转载于:https://www.cnblogs.com/Guishuzhe/p/9713202.html

  • 相关阅读:
    Ubuntu18.04 server 双网卡,一个设置为静态IP, 一个设置为动态IP
    【转载】 Ubuntu 中开机自动执行脚本的两种方法
    Ubuntu18.04server 双网卡,开机自动设置路由并启动校园网网络认证程序(Ubuntu开机自动设置路由,开机自启动应用程序)
    mpi4py 官方使用手册
    【转转】 Huber Loss
    【转载】 MPP大规模并行处理架构详解
    并行强化学习设计的一些想法
    人工智能必备数学基础-回归方程定义
    tf.gather()、tf.gather_nd()、tf.batch_gather()、tf.where()和tf.slice()
    C# 计算时间间隔
  • 原文地址:https://www.cnblogs.com/twodog/p/12135877.html
Copyright © 2011-2022 走看看