Python Flask SQLAlchemy:具有生成属性的声明性模型

Python Flask SQLAlchemy:具有生成属性的声明性模型,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我有一个代表报告的类,包含一个相当长的检查列表和相关注释,如下所示: class Report(db.Model): check_1 = db.Column(db.Boolean, info={'label': 'Check 1'}) check_1_comment = db.Column(db.String, info={'label': 'Check 1 comment'}) check_2 = db.Column(db.Boolean, info={'label': 'Che

我有一个代表报告的类,包含一个相当长的检查列表和相关注释,如下所示:

class Report(db.Model):
  check_1 = db.Column(db.Boolean, info={'label': 'Check 1'})
  check_1_comment = db.Column(db.String, info={'label': 'Check 1 comment'})

  check_2 = db.Column(db.Boolean, info={'label': 'Check 2'})
  check_2_comment = db.Column(db.String, info={'label': 'Check 2 comment'})
由于属性设置要比这复杂得多,而且字段会定期更改,因此我想对其进行重构,从OrderedICT这样的结构生成属性

我尝试了一些使用自定义元类的方法,但鉴于Flask SQLAlchemy的对象层次结构,似乎很难正确执行:

class ReportMeta(_BoundDeclarativeMeta):
  def __new__(cls, *args, **kwargs):
    klass = super().__new__(cls, *args, **kwargs)
    checks = cls.Meta.checks
    for (key, label) in checks.items():
      setattr(klass, key, db.Column(db.Boolean, info={'label': label}))
      setattr(klass, f'{key_comment}', db.Column(db.Str, info={'label': label}))

class Report(db.Model, metaclass=ReportMeta):
  class Meta:
    checks = OrderedDict([('check_1', 'Check 1'), ('check_2', 'Check 2')])
这当然不起作用,因为db.Model和ReportMeta之间的元类冲突。
有可能做类似的事情吗?

你能举一个例子说明你的有序dict将包含什么吗?在第二个例子中,在Report类的Meta类中:
checks=orderedict([('check_1','check 1'),('check_2','check 2'))