2017-07-28 37 views
0

您好我已经创建了一个Flask管理界面。在其中一个字段(列)中,我想包含一个超链接。Flask管理界面中的列格式化程序

class workout(db.Model): 
    equipment = db.Column(db.String(100)) 
    place = db.Column(db.String(100)) 
    image = db.Column(db.Text) 

或模板使用的Jinja2宏:

我要创建的图,其中应包括上述柱以及我必须格式化在视图中的图像列。

我真的不太确定如何创建上述自定义类模型的视图。

from flask_admin.model.template import macro 

class WorkoutView(ModelView): 

在_macros.html文件中。

{% macro render_image() %} 
<a href="#" id="upload_widget_opener">Upload images</a> 
<script src="https://widget.cloudinary.com/global/all.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    document.getElementById("upload_widget_opener").addEventListener("click", function() { 
    cloudinary.openUploadWidget({ cloud_name: 'mycloudname', sources: [ 'local', 'url', 'camera', 'image_search', 
       'facebook', 'dropbox', 'google_photos' ], upload_preset: 'myuploadpreset'}, 
     function(error, result) { console.log(error, result) }); 
    }, false); 
</script> 

{% endmacro %} 

如果我运行_macros.html文件,它是好的,我得到超链接按预期方式。 问题:我试图从_macros.html文件导入宏时格式化的列中没有超链接。

在_macros.html或app.py文件中,我的语法有任何问题吗?

+0

请提及是什么问题 – SumanKalyan

+0

为什么'MyModelView'从'db'继承? – stamaimer

+0

@SumanKalyan:我没有得到图像列中的超链接 –

回答

1

我想你是滥用SQLAlchemy和Flask-Admin。 CustomModel类从SQLAlchemy的db.Model继承,而CustomModelView类从Flask-Admin的ModelView继承,以控制Flask-Admin中该模型的行为。您可以达到您的目的如下:

使用form_widget_args添加id属性以形成字段;

继承create.html & edit.html添加javascript。

class ExampleModelView(ModelView): 

    # ... 

    edit_template = "admin/edit.html" 
    create_template = "admin/create.html" 

    form_widget_args = { 
     "image": { 
      "id": "cloudinary" 
     } 
    } 

    # ... 

# template inherit. "edit.html" is same as "create.html" except the first line. 

{% extends "admin/model/create.html" %} 
{% block tail %} 
    {{ super() }} 
    <script src="https://widget.cloudinary.com/global/all.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     # js code to upload image and return response 
    </script> 
{% endblock %} 
+0

我有点不清楚上面的代码。 class ExampleModelView(ModelView): #...如果我像这样创建一个CustomModelview,如何使用我必须创建视图的CustomClassModel? 如何定义视图中只有一列需要格式化? 如何使用上面显示的create.html文件来渲染视图中的更改? –

+0

起初,答案中的代码仅格式化“图片”字段并保持左侧字段不变。对于第二条评论,您可以先创建一个Flask-Admin实例,然后调用它的add_view方法:'admin.add_view(ExampleModelView(ExampleModel,db.session))''。对于模板文件,您可以在模板目录中创建一个名为'admin'的目录,并在其中放置继承的'create.html'和'edit.html'。 – stamaimer

+0

@KathiravanNatarajan好的 – stamaimer