2

我有一个小问题:简单类

class AModel(db.Model):
  id = db.Column(....)
  title = db.Column(....)
  uniq_text_id = db.Column(db.String(50), unique=True. nullable=False)

def __init__(self):
  uniq_text_id = uuid4().hex

现在我调整了flask-admin 包以及管理员能够创建AModel实例的内容。但是有一种情况:uniq_text_id必须自动创建字段。

所以,现在我无法创建模式,因为flask-admin 说需要字段 uniq_text_id,但也没有显示预填充的值。

有没有办法在烧瓶管理表单中使用预填充的值,或者在不放弃nullable=False约束的情况下以某种方式避免这个问题?

UPD: @codegeek 为仍然显示在表单上的自动生成字段提供了很好的解决方案。我自己的解决方案使用烧瓶管理功能提供的允许显式声明显示哪些列以及隐藏哪些列。

4

2 回答 2

6

您需要为您的模型覆盖 ModelView 类。就像是:

class AModelAdmin(sqlamodel.ModelView):

    uuidtext = uuid4()
    form_args = dict(
                uniq_text_id=dict(default=uuidtext)
            )

    def __init__(self, session):
        super(AModelAdmin, self).__init__(AModel, session)

然后你只需要将它添加到你的管理员

admin.add_view(AModelAdmin(db.session))
于 2013-06-25T15:44:44.487 回答
0

这是我的错 - 太简单地阅读文档。创建了我的模型视图,如填充:

class MyUserLessonModelView(MyModelView):
    form_excluded_columns = ('uniq_text_id', 'created_by', 'created_date', 'modified_by', 'modified_date')

所有自动生成的字段都从表单中消失。

于 2013-06-26T08:03:56.757 回答