2013-06-25 58 views
1

我有小问题:简单的类瓶管理员和预填充值

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 

现在我调整烧瓶管理员包,什么管理员能够创建AModel实例。但有一种情况:必须自动创建字段uniq_text_id

因此,现在我无法创建模式,因为flask-admin在必填栏中显示的是uniq_text_id,但也未显示预填充的值。

有没有什么办法可以在flask-admin表单中使用prepopulated的值,或者避免以某种方式解决这个问题而不会影响nullable=False约束?

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

回答

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)) 
+0

哇,谢谢你的另一种解决方案! –

0

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

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

并且所有自动生成的字段都从窗体中消失。

+0

你最终找到了解决办法吗? – Orny