空白时无法保存自定义可选选择器块



遇到了与这里描述的问题完全相同的问题:https://github.com/wagtail/wagtail/issues/7344#issue-946329708,但在我的情况下,修复似乎不起作用。

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

但当空白时,我在尝试保存时结结巴巴地发现了这个错误:

字段"id"需要一个数字,但得到了"。

错误的堆栈与我上面链接的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,如下所述:https://stackoverflow.com/a/60979072/13934028.

它似乎对我的情况很好

最新更新