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")
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操作的主要内容,如果未能解决你的问题,请参考以下文章

django基础操作

Django与数据库操作

django数据库操作

Django操作指令大全

Django models ORM基础操作--白话聊Django系列

django的操作演示