contentType
fromdjango.contrib.contenttypes.modelsimportContentTypefromdjango.contrib.contenttypes.fieldsimportGenericForeignKeyfromdjango.contrib.contenttypes.fieldsimportGenericRelationclassCourse(models.Model):price_policy=GenericRelation("PricePolicy")classPricePolicy(models.Model):"""价格与有课程效期表"""content_type=models.ForeignKey(ContentType,on_delete=models.CASCADE)#关联courseordegree_courseobject_id=models.PositiveIntegerField()content_object=GenericForeignKey('content_type','object_id')一种课程有多种价格策略在course表中:classCouser(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)在价格策略表中:classPricePolicy(models.Model):price=models.DecimalField(max_digits=8,decimal_places=2)period=models.CharField(max_length=32)#强调:如果是外部导入的表,不能带引号,#表的idtable_id=models.ForeignKey(to=ContentType)#table_bb=models.ForeignKey(to='contenttypes.ContentType')#课程idcourse_id=models.IntegerField()#PositiveIntegerField()---正整数#如果表id字段名叫:content_type,课程id字段名叫:object_idGenericForeignKey就不需要传参数#不需要做数据库迁移,也不会再数据库生成字段,只用来做查询和插入#如果保存的时候,只需要传content_obj这个字段,内部自动会保存table_id,course_idcontent_obj=GenericForeignKey('table_id','course_id')
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。