博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-ContentType的简单使用
阅读量:6965 次
发布时间:2019-06-27

本文共 1558 字,大约阅读时间需要 5 分钟。

ContentType

  一般我们有多张表同时外键关联同一张表的时候,可以考虑使用ContentType

models.py

1 from django.db import models 2 from django.contrib.contenttypes.models import ContentType # django自己生成的表,里面存储着每一个app和它下面的表关系 3 from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation 4  5  6 class PythonBasic(models.Model): 7     course_name = models.CharField(max_length=32) 8     coupons = GenericRelation(to='Coupon') ##相当于foreignkey 9 10 11 class Oop(models.Model):12     course_name = models.CharField(max_length=32)13     coupons = GenericRelation(to='Coupon') ##相当于foreignkey14 15 16 class Coupon(models.Model):17     coupon_name = models.CharField(max_length=32)18     content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) ##19     object_id = models.PositiveIntegerField() ##20 21     content_object = GenericForeignKey("content_type", "object_id") ## 在表中不会真的生成这个字段,但是对应关系是靠它实现的

views.py

1 class ContentTypeView(View): 2  3     def get(self, request): 4         # 获取表名 5         # pb = ContentType.objects.filter(app_label='app01', model='pythonbasic').first() 6         # print(pb.model_class()) # 
7 # print(pb.model_class().objects.all()) #
,
,
]> 8 9 # obj = PythonBasic.objects.get(id=3)10 obj = Oop.objects.get(id=2)11 # Coupon.objects.create(coupon_name="Python基础通关", content_object=obj)12 print(obj.coupons.all())13 14 return HttpResponse('ok')

 

转载于:https://www.cnblogs.com/qq849784670/p/10104962.html

你可能感兴趣的文章
WordPress.com使用JavaScript替换掉PHP
查看>>
代码自解释不是不写注释的理由
查看>>
Racket 6.11提供了稳定的细化类型和依赖函数特性
查看>>
Visual Studio 15改进C++工程加载
查看>>
使用 Kanban精益创新
查看>>
Deis发布1.4版本,支持Microsoft Azure
查看>>
英伟达收购Mellanox接近尾声,将成英伟达史上最大收购案
查看>>
How I Set Up OpenMP for Mac
查看>>
一套代码称霸5大端口,移动金融应用还能这样开发?
查看>>
如何进行5万并发用户负载测试?
查看>>
架构周报:十亿级红包的平台架构揭秘
查看>>
JetBrains宣布Project Rider:一款C#跨平台IDE
查看>>
Electric Cloud推出用于DevOps的预测分析平台
查看>>
记录搭建Ionic开发环境,创建Ionic工程遇到的坑(2016年12月09日更新)
查看>>
元数据驱动设计——连接设计与开发的敏捷桥梁
查看>>
将敏捷应用于工业机械开发
查看>>
百度发布智能电视伴侣,并公布短视频计划
查看>>
Java将每半年发布一个版本
查看>>
Kubernetes日志分析利器:Elassandra部署使用指南
查看>>
阿里巴巴直播防控中的实人认证技术
查看>>