Ich versuche, ein Eins-zu-viele-Feld in meiner Flask-Admin-App zu erweitern, um ein benutzerdefiniertes Select2-Feld zu verwenden. Der Javascript-Code für das Feld sieht etwa so aus:Flask-Admin Benutzerdefiniertes Select2 Ajax Feld
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; }
});
Ich bin nicht sicher, was ich brauche in meiner Ansicht Code zu ändern. Ich habe so etwas wie dies versucht:
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)
aber es ist nicht Ajax und es ist ein Fehler, wenn sie versuchen, die Liste zu analysieren.
Ich fühle, dass ich in der Nähe bin, aber brauche eine Anleitung, um dorthin zu kommen, danke für die Hilfe.
Dies ist nicht einmal syntaktisch korrekt. 'für x in Lambda' versucht, über eine Funktion zu iterieren, die nie ausgewertet wird. –