Python 将空选项插入QuerySetSelectField
我有一个这样的模特Python 将空选项插入QuerySetSelectField,python,flask,jquery-select2,mongoengine,Python,Flask,Jquery Select2,Mongoengine,我有一个这样的模特 class AppMetaForm(BaseForm): category = QuerySetSelectField('CATEGORY'), queryset=AppCategory.objects()) ..... 在UI上,我使用select2使选择框更漂亮。现在,我想在每个选择框中添加类似“-select-”的占位符。Select2支持占位符,但在本例中需要第一个空选项。所以我需要在类别选择列表中插入一条空记录。遗憾的是,类别没有Choices成员
class AppMetaForm(BaseForm):
category = QuerySetSelectField('CATEGORY'), queryset=AppCategory.objects())
.....
在UI上,我使用select2使选择框更漂亮。现在,我想在每个选择框中添加类似“-select-”的占位符。Select2支持占位符,但在本例中需要第一个空选项。所以我需要在类别选择列表中插入一条空记录。遗憾的是,类别没有Choices成员,因为它不是SelectField。此外,我不能在字段定义中使用参数allow_blank和占位符,因为它不接受空白记录
如果我将QuerySetSelectField替换为SelectField,并通过查询填充它,设置强制到ObjectId,它会工作,但我无法插入空值,因为它正在发送到服务器并导致错误None is not ObjectId
如何实现所需的行为?找到快速修复程序。我仍然不知道如何在服务器端更新选项,我主要是在客户端更新的。服务器端的一个注意事项-在模板中将属性添加到字段数据占位符=-选择-
$('select[data-placeholder]').each(function() {
//Check whether any option is `selected`, pseudoattribute `:selected` here is unacceptable
var selected = $('option[selected]', this);
if (!selected.length) {
//Creating fake option with valid but fake ObjectId and select it.
//If form returned after validation it already has `selected` option and I will not add placeholder to select.
var option = $('<option>', {
html: $(this).attr('data-placeholder'),
selected: 'selected',
value: '000000000000000000000000'
});
//Add this option first
$(this).prepend(option);
}
});
//Initialise all select tags with `select2` widget
$('select', container).select2({
minimumResultsForSearch: -1,
width: 'element'
});