contenttypes框架

来源:互联网 发布:sqlserver 图标 编辑:程序博客网 时间:2024/06/01 22:40

当一个model里面有很多个外键的时候就可以使用contenttypes框架。这个框架可以提供一个接口给所有的model,很方便的将模型关联起来。

有以下的model:

class Post(models.Model):    title=models.CharField(max_length=200)    test=models.TextField()

class Picture(models.Model):    name=models.CharField(max_length=200)    image=models.ImageField()

class Comment(models.Model):    text=modelsTextField()    post=models.ForeignKey(Post)    image=models.ForeignKey(Image)
使用contenttypes代替外键:

class Comment(models.Model):    text=models.TextField()    content_type=models.ForeignKey(Contenttype)    object_id=models.PositiveIntegerField()    content_object=fields.GenericForeignKey()
使用方法:

post=Post.objects.create('title','text')comment=Comment.objects.create('comment',content_object=post)
将一个model实例传入content_object并且将其他必须的字段填写完成,就可以在model之间建立外键关系了。这样就不用在定义model的时候指定外键关系