空白时无法保存自定义可选 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_value
和 clean
方法,但它没有改变任何东西。
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://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_value
和 clean
方法,但它没有改变任何东西。
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,如下所述:
它似乎很适合我的情况