page contents

Django的模型继承有哪几种方式? 它们有什么区别以及何时使用它们?

轩辕小不懂 发布于 2022-06-18 13:53
阅读 675
收藏 0
分类:Python开发
3804
Nen
Nen
- 程序员

Django的模型继承有如下3种方式:

1. 抽象模型继承(abstract model)

2. 多表模型继承(multi-table inheritance)

3. 代理模型(proxy model)

它们的区别如下:

Django不会为抽象模型在数据库中生成自己的数据表。父类Meta中的abstract=True也不会传递给子类。如果你发现多模型有很多共同字段时,需使用抽象模型继承。

多表模型继承与抽象模型继承最大的区别在于Django也会为父类模型建立自己的数据表,同时隐式地在父类和子类之间建立一个一对一关系。

如果我们只想改变某个模型的行为方法,而不是添加额外的字段或创建额外的数据表,我们就可以使用代理模型(proxy model)。设置一个代理模型,需要在子类模型Meta选项中设置proxy=True, Django不会为代理模型生成新的数据表。

请先 登录 后评论