空白时无法保存自定义可选 ChooserBlock

Can't save custom optional ChooserBlock when blank

遇到了此处详细描述的完全相同的问题:https://github.com/wagtail/wagtail/issues/7344#issue-946329708但修复似乎对我的情况不起作用。

基本上我有一个自定义的 ChooserBlock,应该可以将模型的给定实例绑定到 StructBlock。如果 ChooserBlock 值是否为空,渲染工作会有所不同,因此它实际上可以为空非常重要。

但是当留空时,我在尝试保存时遇到了这个错误:

Field 'id' expected a number but got ''.

错误的堆栈与我上面链接的 github 问题中描述的堆栈完全相同。

我尝试了给定的修复,但它似乎没有任何区别,至少对于我的问题而言。

class CommunityChooserBlock(blocks.ChooserBlock):
target_model = Community
widget = forms.Select

# Return the key value for the select field
def value_for_form(self, value):
    if value == "":
        return None
    else:
        return super().value_from_form(value)

我错过了什么吗?

编辑: 我也尝试覆盖 get_prep_valueclean 方法,但它没有改变任何东西。

def get_prep_value(self, value):
    if value == '':
        return None
    else:
        super().get_prep_value(value)


def clean(self, value):
    if value == '':
        value = None
    super().clean(value)

更新:我想不出一个合适的解决办法,所以我改变了我的计划,选择了一个带有动态选择列表的 ChoiceBlock,如下所述:.

它似乎很适合我的情况