
需要创建几张表,每张表有大量通用字段,想通过继承来复用这些字段
创建了一个 metaclass 来增加类属性,但是报 metaclass conflict 了
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
按报错需要子类的元类继承自所有父类的元类,尝试去继承 db.Model 的元类好像有点问题
代码如下
class MetaRank(type): def __new__(cls, name, bases, attrs): attrs.update({ 'id': db.Column(db.Integer), 'rank1': db.Column(db.Integer), 'rank2': db.Column(db.Integer), 'rank3': db.Column(db.Integer), 'rank4': db.Column(db.Integer), 'rank5': db.Column(db.Integer), 'rank6': db.Column(db.Integer), }) return type.__new__(cls, name, bases, attrs) class BaseRank(object, metaclass=MetaRank): pass class MovieRank(db.Model, BaseRank): work_id = db.ForeignKey('movie.id') class PhotoRank(db.Model, BaseRank): work_id = db.ForeignKey('photo.id') 不知道我表述清楚了没,大概意思和这篇文章一样 https://www.dreamincode.net/forums/topic/324123-metaclass-for-a-class-extending-from-sqlalchemy-declarative-base/