模型继承

class Author(models.Model):
    name=models.CharField(max_length=100)
    class Meta:
        abstract=True
class Book(Author):
    title=models.CharField(max_length=100)
数据库里将只有一张表——Book,它有两个字段name,title.
class Author(models.Model):
    name=models.CharField(max_length=100)
    #class Meta:
       # abstract=True
class Book(Author):
    title=models.CharField(max_length=100)
这个model和上一个唯一的区别在于没有Meta类,这样会生成两张表。
Author拥有完整的django模型,可以正常实例化,同时还能把自己的属性借给子类。其实,这是通过在父类和子类中实现了一个OneToOneField关系。
所以Book的数据分为两部分,一部分在Author中,另外一部分在Book中。
注意:这种方法带来的一个缺点就是如果两边都定义了Meta类,可能会产生冲突,因为他们同时集成了这两个Meta。
posted @ 2012-03-22 13:38  jianhong  阅读(149)  评论(0编辑  收藏  举报