1、数据库优化问题
1、尽量避免表关联---数据操作效率低
2、尽量的避免io(读写)
2、问题
在Django中,model可以使用继承,即子类可以继承父类,默认情况下,继承之后,使用迁移创建数据库表之后,默认会创建一个父类表,也会创建子类表,但是子类表中继承的父类的属性,不会在子类表中,而是通过外键关联父类表获得。
默认情况不合理,应该子类是一个独立的表,避免表关联。
3、解决
将父类model定义成抽象的类即可
如:在父model中添加
class Meta:
abstract = True
使得model抽象化,不能实例化,继承的子模型就不会再关联父表,子模型会是独立的表,且会继承父类的模型的属性。
4、例
from django.db import models
# Create your models here.
# 定义一个动物类
class Animal(models.Model):
a_name = models.CharField(max_length=50)
a_leg_num= models.IntegerField(default=4)
#使得model抽象华.不能实例化, 继承的子模型就不会在关联父表,子模型会是独立的表
class Meta:
abstract = True
# 狗---继承与animal
class Dog(Animal):
d_food = models.CharField(max_length=50)
# 猫 --- 继承与animal
class Cat(Animal):
c_food = models.CharField(max_length=50)
5、迁移问题
迁移的时候,可能会因为迁移文件已经有对应的迁移记录,而是的迁移失败
解决:
1、删除对应的表(小心操作)
2、在django-migrations表中删除对应的记录
2、删除migrations目录下的迁移文件
4、再次重新迁移即可
6、注意
删除操作数据库中的数据时,要格外小心,如果不小心误删了数据库,赶紧跑,别回头...