contentType-创新互联


from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.fields import GenericRelation
class Course(models.Model):
price_policy = GenericRelation("PricePolicy")
class PricePolicy(models.Model):
"""价格与有课程效期表"""
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) # 关联course or degree_course
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
一种课程有多种价格策略
在course表中:
class Couser(models.Model):
title = models.CharField(max_length=32)
# 不需要做数据库迁移,这个字段不会在数据表中生成,只用来方便查询
policy = GenericRelation('PricePolicy', object_id_field='course_id'#对应的是价格策略表中的course_id, content_type_field='table_id'#对应的是价格策略表中的table_id)
在价格策略表中:
class PricePolicy(models.Model):
price = models.DecimalField(max_digits=8, decimal_places=2)
period = models.CharField(max_length=32)
# 强调:如果是外部导入的表,不能带引号,
# 表的id
table_id = models.ForeignKey(to=ContentType)
# table_bb = models.ForeignKey(to='contenttypes.ContentType')
# 课程id
course_id = models.IntegerField()
# PositiveIntegerField()---正整数
# 如果表id 字段名叫:content_type ,课程id字段名叫:object_id GenericForeignKey就不需要传参数
# 不需要做数据库迁移,也不会再数据库生成字段,只用来做查询和插入
# 如果保存的时候,只需要传content_obj这个字段,内部自动会保存table_id,course_id
content_obj = GenericForeignKey('table_id','course_id')
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前题目:contentType-创新互联
标题来源:http://www.scyingshan.cn/article/gjeph.html


咨询
建站咨询
