ContentType表的用法
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
# Create your models here.
class DegreeCourse(models.Model):
"""學位課程
ID 名稱
1 學位課1
2 學位課2
"""
name = models.CharField(max_length=128, unique=True)
#反向獲取關聯欄位,不會在資料庫中生成欄位
x1 = GenericRelation("Coupon")
class Course(models.Model):
"""課程
ID 名稱
1 普通課1
2 普通課2
"""
name = models.CharField(max_length=128, unique=True)
class Coupon(models.Model):
"""優惠券生成規則
ID 優惠券名稱 A FK B.FK c.FK
1 通用 null null
2 滿100-10 8 1
3 滿200-30 8 2
4 滿200-30 9 1
ID 優惠券名稱 content_type_id(表) object_id(表中資料ID)
1 通用 null null
2 滿100-10 8 1
3 滿200-30 8 2
4 滿200-30 9 1
總結:
"""
name = models.CharField(max_length=64, verbose_name="活動名稱")
brief = models.TextField(blank=True, null=True, verbose_name="優惠券介紹")
# 那個表?
content_type = models.ForeignKey(ContentType, blank=True, null=True)
# 物件ID
object_id = models.PositiveIntegerField("繫結課程", blank=True, null=True, help_text="可以把優惠券跟課程繫結")
content_object = GenericForeignKey('content_type', 'object_id')
- views.py
def test(request):
# models.UserInfo.objects.filter()
# content = ContentType.objects.get(app_label='app01',model='userinfo')
# model_class = content.model_class()
# print(model_class.objects.all())
# 給學位課1或普通課建立優惠券
# d1 = models.DegreeCourse.objects.get(id=1)
# models.Coupon.objects.create(name='優惠券', brief='200-30', content_object=d1)
# d1 = models.Course.objects.get(id=1)
# models.Coupon.objects.create(name='優惠券', brief='100-90', content_object=d1)
# 當前優惠券,繫結的課程?
obj = models.Coupon.objects.get(id=1)
print(obj.content_object)
# 當前課程,都有哪些優惠券?
# obj = models.DegreeCourse.objects.get(id=1)
# print(obj.x1.all())
# v = models.DegreeCourse.objects.values('name','x1__brief')
# print(v)
return HttpResponse('...')
使用場景:
表中有多個欄位使用ForeignKey的欄位,同時需要滿足這個一對多隻能選擇其一
相關文章
- $.ajax 中的contentType型別型別
- 下載檔案的ContentType
- Web檔案的ContentType型別收集Web型別
- oracle臨時表的用法Oracle
- Azure Storage Blob ContentType 問題
- setContentType() ContentType 型別型別
- ashx中Response.ContentType的常用型別型別
- oracle臨時表的用法(轉)Oracle
- openpyxl 操作 Excel表的格基本用法Excel
- oracle臨時表的用法總結Oracle
- mysql 分割槽表用法MySql
- jQuery的AJAX請求中contentType和dataType的區別jQuery
- 獲取相應副檔名的ContentType型別型別
- Oracle臨時表的用法總結FLOracle
- Oracle中的臨時表用法彙總Oracle
- 關於with 臨時表 as的一些用法
- 表單元素的form屬性用法介紹ORM
- Lotus CGI 變數表及其用法變數
- PL/SQL表---table()函式用法SQL函式
- 資料庫表的連線方式及用法(一)資料庫
- asp.net response.ContentType 下載檔案的四種方法ASP.NET
- Mysql匯出表結構及表資料 mysqldump用法MySql
- PL/SQL表(oracle記憶體表)---table()函式用法SQLOracle記憶體函式
- button 和input 的區別及在表單form中的用法ORM
- MySQL中merge表儲存引擎用法MySql儲存引擎
- 使用Disql執行表空間還原的複雜用法SQL
- ajax設定contentType=json後臺獲取不到引數JSON
- mssql sqlserver update delete表別名用法簡介SQLServerdelete
- ORACLE表連線方式及常見用法(二)Oracle
- DM7使用Disql執行表還原的複雜用法SQL
- (收集)關於 contentType 和 pageEncoding 的差異 和 中文JSP頁的設定技巧EncodingJS
- 關於oracle with table as 建立臨時表的用法示例以及使用with as 的優點Oracle
- 內容型別(ContentType)與副檔名(Extension)相互對映薦型別
- ORACLE表連線方式分析及常見用法(zt)Oracle
- MySQL的information_schema資料庫表說明及用法舉例MySqlORM資料庫
- Qdrant用法;Qdrant在langchain裡的用法LangChain
- SQL AS 的用法SQL
- SUBMIT 的用法MIT