首页 > 其他 > 详细

django的orm--contenttype操作

时间:2018-03-02 00:25:54      阅读:267      评论:0      收藏:0      [点我收藏+]

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")
model
技术分享图片
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)
view

上面是反向查询,下面是正向查询

price_obj=models.PricePolicy.objects.filter(id=1)
status=price_obj.content_type.status  
#可以直接通过content_type查询course表中字段

 

django的orm--contenttype操作

原文:https://www.cnblogs.com/52forjie/p/8491016.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!