Django中的模型是可以继承的
默认的继承是在主模型中生成id及主模型字段,这样的关系特别复杂,父类里数据量也会很庞大,效率低
model.py
migrate后,会生成三张表,然后cat、dog 都外键关联Animal表
class Animal(models.Model):
a_name=models.CharField(max_length=20)
class Cat(Animal):
c_eat=models.CharField(max_length=20)
class Dog(Animal):
d_like=models.CharField(max_length=20)
views.py
此时添加的数据,会同步在animal表中生成a_name,
def add_cat(request):
cat=Cat()
cat.c_eat='爱吃鱼'
cat.a_name='Tom'
cat.save()
return HttpResponse('猫添加成功')
def add_dog(request):
dog=Dog()
dog.d_like='爱叫唤'
dog.a_name='Poy'
dog.save()
return HttpResponse('狗添加成功')
使用元信息,将模型抽象化,这样模型之间没有映射,而只是继承父模型的字段
class Animal(models.Model):
a_name=models.CharField(max_length=20)
# 用元信息将模型抽象化
class Meta:
abstract= True
class Cat(Animal):
c_eat=models.CharField(max_length=20)
class Dog(Animal):
d_like=models.CharField(max_length=20)