Flask-admin和预先填充的值

时间:2013-06-25 15:11:47

标签: flask flask-sqlalchemy

我有一个小问题:简单的课程

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说需要fiel uniq_text_id,但也没有显示预先填充的值。

有没有办法在flask-admin表单中使用预先填充的值,或者在不放弃nullable=False约束的情况下避免某种方式出现此问题?

UPD: @codegeek为自动生成的字段提供了良好的解决方案,这些字段仍显示在表单上。我自己的解决方案使用由flask-admin功能提供,允许显式声明显示哪些列以及哪些 - 隐藏。

2 个答案:

答案 0 :(得分:3)

您需要覆盖模型的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))

答案 1 :(得分:0)

这是我的错 - 阅读文档太简短了。创建了我的模型视图,如下所示:

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

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