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'
});