美文网首页
Models and Databases 1.Models

Models and Databases 1.Models

作者: xncode | 来源:发表于2018-12-17 15:10 被阅读0次

关系

多对一 ForeignKey

多对多 ManyToManyField

中间人

如果简单的多对多不能满足需求,例如想对两个实体的关系进行进一步的描述:

用户 和 群组 是典型的多对多的关系
可以增加用户何时加入群组的字段,而这一字段是描述关系的

在定义ManyToManyField时可通过设置through来使用中间人

中间人需要设置两个外键到 用户 群组

一对一

model继承

1、只想父类中放一些子类的共同信息,父类不会被独立得用 -- 抽象继承
2、针对已有模型派生
3、只在python层面改变,不改模型

抽象继承

在类的meta中增加了abstract=True,该类则为抽象父类

对于他的子类,属性都会继承,可以重载,可以设置为None来移除
对于meta,如果子类没有定义meta则使用父类的meta(会自动设置abstract=False),否则需要显式继承meta

在抽象父类中定义关系型字段,如related_name和related_query_name时需注意

一般继承

会自动创建一个一对一的关系
对于meta,子类不会继承,但如果子类未定义ordering属性或get_latest_by属性则会使用父类的属性

不能重载父类的字段

代理模式

在类的meta中增加了proxy=True即可
派生出的类不会真正构造

这种方式和使用数据库已经存在的表的方式类似(设置managed=False):
但是会自动保持同步

多表继承

只继承第一个表的Meta

不能重载父类的字段

相关文章

网友评论

      本文标题:Models and Databases 1.Models

      本文链接:https://www.haomeiwen.com/subject/dviwhqtx.html