最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django組件content-type使用方法詳解

 更新時間:2019年07月19日 10:31:27   作者:Crazymagic  
這篇文章主要介紹了Django組件content-type使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

一個表和多個表進行關(guān)聯(lián),但具體隨著業(yè)務的加深,表不斷的增加,關(guān)聯(lián)的數(shù)量不斷的增加,怎么通過一開始通過表的設計后,不在后期在修改表,徹底的解決這個問題呢呢

django中的一個組件content-type可以幫助我們解決這樣的一個問題

在這里我先設計了3張表 學位表 普通課程 和價格策略表 大致的設計如下

在上圖中我們可以看到價格策略表和其他的兩個表進行了關(guān)聯(lián),可以根據(jù)表明

models.py

from django.db import models
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)
  # 僅用于反向查找 不在數(shù)據(jù)庫中添加字段
  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()

  # 關(guān)聯(lián)表
  content_type = models.ForeignKey(ContentType, verbose_name='關(guān)聯(lián)的表名稱') # 7,8 表名稱
  object_id = models.IntegerField(verbose_name='關(guān)聯(lián)的表中的數(shù)據(jù)行的ID')  #
  # 幫助你快速實現(xiàn)content_type操作 ,快速插入數(shù)據(jù) 不生成數(shù)據(jù)庫中的字段 
  content_object = GenericForeignKey('content_type', 'object_id')

進行插入數(shù)據(jù)的類視圖

from django.shortcuts import render,HttpResponse
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)
  #
  # obj2 = models.DegreeCourse.objects.filter(title='Python全棧').first()
  # models.PricePolicy.objects.create(price=19.9, period=60, content_object=obj2)
  #
  # obj3 = models.DegreeCourse.objects.filter(title='Python全棧').first()
  # models.PricePolicy.objects.create(price=29.9, period=90, content_object=obj3)

  # 2. 為學位課“rest”添加一個價格策略:一個月 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. 根據(jù)課程ID獲取課程, 并獲取該課程的所有價格策略
  # course = models.Course.objects.filter(id=1).first()
  #
  # price_policys = course.price_policy_list.all()
  #
  # print(price_policys)


  return HttpResponse('...')

為其添加路由

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^test/', views.test),
]

我們自己進行插入數(shù)據(jù)可能會這樣寫

# 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)
"""
# obj = DegreeCourse.objects.filter(title='Python全棧').first()
# PricePolicy.objects.create(price='9.9',period='30',content_object=obj)

輸入以下的地址進行測試

http://127.0.0.1:8000/test

數(shù)據(jù)庫中的結(jié)果如下

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中altair可視化庫實例用法

    python中altair可視化庫實例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中altair可視化庫實例用法,對此有興趣的朋友們可以學習下。
    2021-01-01
  • Python繪制的愛心樹與表白代碼(完整代碼)

    Python繪制的愛心樹與表白代碼(完整代碼)

    這篇文章主要介紹了Python繪制的愛心樹與表白代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 如何使用Python對日期和時間進行排序

    如何使用Python對日期和時間進行排序

    本文將教我們?nèi)绾问褂肞ython對日期和時間進行排序,我們還將學習datetime模塊和sorted方法,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-06-06
  • Python實現(xiàn)自動玩連連看的腳本分享

    Python實現(xiàn)自動玩連連看的腳本分享

    最近女朋友在玩連連看,玩了一個星期了還沒通關(guān),真的是菜。實在是看不過去了,直接用python寫了個腳本代碼可以自動玩連連看,感興趣的可以了解一下
    2022-04-04
  • 對python中的float除法和整除法的實例詳解

    對python中的float除法和整除法的實例詳解

    今天小編就為大家分享一篇對python中的float除法和整除法的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python之requests高級用法詳解

    Python之requests高級用法詳解

    這篇文章主要介紹了Python之requests高級用法詳解,http協(xié)議是無狀態(tài)的,?服務器無法區(qū)分多個請求是否來自同一個人,因此需要用cookie來進行標識,一般如果需要登錄才能訪問的網(wǎng)站就需要發(fā)送cookie信息,需要的朋友可以參考下
    2023-10-10
  • Ubuntu下安裝PyV8

    Ubuntu下安裝PyV8

    本文給大家簡單介紹了下在ubuntu下安裝pyv8的方法和注意事項,非常的實用,有需要的小伙伴可以參考下
    2016-03-03
  • 詳解Django配置優(yōu)化方法

    詳解Django配置優(yōu)化方法

    這篇文章主要介紹了詳解Django配置優(yōu)化方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • python使用scapy模塊實現(xiàn)ping掃描的過程詳解

    python使用scapy模塊實現(xiàn)ping掃描的過程詳解

    這篇文章主要介紹了python使用scapy模塊實現(xiàn)ping掃描的過程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Python+Pandas實現(xiàn)數(shù)據(jù)透視表

    Python+Pandas實現(xiàn)數(shù)據(jù)透視表

    對于數(shù)據(jù)透視表,相信對于Excel比較熟悉的小伙伴都知道如何使用它。本文將利用Python Pandas實現(xiàn)數(shù)據(jù)透視表功能,感興趣的可以學習一下
    2022-06-06

最新評論

奇台县| 油尖旺区| 赤峰市| 开封县| 南开区| 隆尧县| 来安县| 朝阳区| 鹤峰县| 呼图壁县| 诸暨市| 绍兴县| 五大连池市| 巨野县| 和田县| 丰台区| 吴桥县| 蚌埠市| 会东县| 塘沽区| 当雄县| 汾西县| 繁峙县| 河北省| 东方市| 桂东县| 铜陵市| 镇康县| 兴宁市| 夏津县| 兰考县| 六枝特区| 庆城县| 民县| 洛隆县| 商河县| 兴仁县| 农安县| 天柱县| 曲松县| 综艺|