【问题标题】:Flask-Admin Custom Select2 Ajax FieldFlask-Admin 自定义 Select2 Ajax 字段
【发布时间】:2014-03-08 13:10:24
【问题描述】:

我正在尝试在我的 Flask-Admin 应用程序中扩展一对多字段以使用自定义 Select2 字段。该字段的 javascript 代码如下所示:

function format(data) {
    if (!data.id) return data.text; // optgroup
    return "<img class='flag' src='" + data.text + "'/>" + data.id;
}    
function formatSelection(data) {
    return data.id;
}
$("#da2").select2({
    maximumSelectionSize: 3,
    formatResult: format,
    formatSelection: formatSelection,
    escapeMarkup: function(m) { return m; }
});

我不确定我需要在我的视图代码中更改什么。我试过这样的事情:

class PostForm(wtf.Form):
    title = fields.TextField('Title')
    photos = fields.SelectField('Photo', widget=widgets.Select(multiple=True), id='da2')

class PostView(ModelView):
    form = PostForm

def _feed_user_choices(self, mform):
        photos = Photo.query.all()
        mform.photos.choices = [(x.path, url_for('static',
                                                 filename=form.thumbgen_filename(x.path))) for x in photos]
        return mform

def create_form(self):
    form = super(Post2View, self).create_form()
    return self._feed_user_choices(form)

但它不是 ajax 并且在尝试解析列表时出错。

我觉得我很接近了,但需要一些指导才能到达那里,谢谢你的帮助。

【问题讨论】:

    标签: javascript python ajax flask flask-admin


    【解决方案1】:

    你可能需要一个 lambda

    def _feed_user_choices(self, mform):
        mform.photos.choices = [(x.path, url_for('static',filename=form.thumbgen_filename(x.path))) for x in lambda: Photo.query.all()]
        return mform
    

    【讨论】:

    • 这在语法上甚至都不正确。 for x in lambda 正在尝试迭代一个从未评估过的函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多