使用UUID的Flask-Appbuilder模型关系

时间:2018-02-03 01:16:05

标签: python flask flask-sqlalchemy flask-wtforms flask-appbuilder

我正在开发一个应用程序,它将定义几个将使用scqlalchemy_utils包中的UUIDType的模型,定义如下视图:

class ChildModelAView(ModelView):
    datamodel = SQLAInterface(ChildA)
    list_columns = ['title', 'description', 'parent_model']

class ChildModelBView(ModelView):
    datamodel = SQLAInterface(ChildB)
    list_columns = ['title', 'description', 'parent_model']

class ParentModelView(ModelView):
    datamodel = SQLAInterface(Parent)
    related_views = [ChildModelAView, ChildModelBView]

我的模特是这样的:

class ChildA(Model):
    id = Column(UUIDType(binary=False), default=uuid.uuid4, primary_key=True)
    parent_id = Column(UUIDType(binary=False), ForeignKey('parent.id'), nullable=False)
    parent = relationship('Parent')


class ChildB(Model):
    id = Column(UUIDType(binary=False), default=uuid.uuid4, primary_key=True)
    parent_id = Column(UUIDType(binary=False), ForeignKey('parent.id'), nullable=False)
    parent = relationship('Parent')

class Parent(Model):
    id = Column(UUIDType(binary=False), default=uuid.uuid4, primary_key=True)

我在启动应用程序时看到所有定义为UUID的列的警告:

2018-02-02 19:08:39,244:WARNING:flask_appbuilder.models.filters:Filter type not supported for column: id
2018-02-02 19:08:39,244:WARNING:flask_appbuilder.models.filters:Filter type not supported for column: parent_id

任何人都可以向我展示一个允许使用UUID类型(或其他自定义)列进行过滤的工作示例或代码段吗?使用此类型的所有其他内容似乎都能正常工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果其他人偶然遇到同样的问题,似乎有一个解决方案正在为FAB本身工作。

以下是解决此问题的公关:https://github.com/dpgaspar/Flask-AppBuilder/pull/694