我需要实现以下逻辑:有一个大模型Base
,其中包含许多字段,几个较小的模型与它共享一些字段子集以及彼此共享。例如,假设Base
有字段a
、b
、c
、d
、e
和f
;模型A
有字段a
、b
、g
;模型B
有字段b
、c
、d
、g
;模型C
具有字段d
、e
、f
、g
。
尝试从抽象模型中正确继承很快就会导致混乱,但是手动复制字段似乎也不是最佳的,因为主模型中的每个字段都存在于较小的字段中,因此必须列出两次。解决这个问题的好方法是什么?
你需要从Base
继承并使其成为抽象的。
然后用None
覆盖您不需要的字段。
Django 文档在这里提到了这一点。Fields inherited from abstract base classes can be overridden with another field or value, or be removed with None.