django的orm--contenttype操作
Posted forjie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django的orm--contenttype操作相关的知识,希望对你有一定的参考价值。
1,在django操作orm生成表时,会自动生成一个包含所有表名称的表.
名字就叫:
2,实际操作.
class PricePolicy(models.Model): """价格与有课程效期表""" content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = GenericForeignKey(\'content_type\', \'object_id\') valid_period_choices = ((1, \'1天\'), (3, \'3天\'), (7, \'1周\'), (14, \'2周\'), (30, \'1个月\'), (60, \'2个月\'), (90, \'3个月\'), (180, \'6个月\'), (210, \'12个月\'), (540, \'18个月\'), (720, \'24个月\'), ) valid_period = models.SmallIntegerField(choices=valid_period_choices) price = models.FloatField() class Course(models.Model): attachment_path = models.CharField(max_length=128, verbose_name="课件路径", blank=True, null=True) status_choices = ((0, \'上线\'), (1, \'下线\'), (2, \'预上线\')) status = models.SmallIntegerField(choices=status_choices, default=0) template_id = models.SmallIntegerField("前端模板id", default=1) coupon = GenericRelation("Coupon") # 用于GenericForeignKey反向查询,不会生成表字段,切勿删除 price_policy = GenericRelation("PricePolicy")
course_obj=models.Course.object.filter(id=1) price_list=course_obj.price_policy.all() #获取与之关联的price_policy的所有对象 for price in price_list: #获取所有字段,和操作其他orm一样. print(price.valid_period) print(price.price)
上面是反向查询,下面是正向查询
price_obj=models.PricePolicy.objects.filter(id=1) status=price_obj.content_type.status #可以直接通过content_type查询course表中字段
以上是关于django的orm--contenttype操作的主要内容,如果未能解决你的问题,请参考以下文章