美文网首页
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