Django表单调试时field_val正常,非调试时为空的问题排查
问题:Django表单datalist值在非调试状态下为空,调试时正常显示
正常情况下field_val应被设置为特定值,但实际却被设为空字符串。在VSCode中调试查看该变量时,变量值会正常显示;但非调试状态下值为空。想确认Django表单中是否存在我忽略的惰性求值机制?
我需要在表单提交失败时,将提交的值保留在datalist中,因此尝试从self.instance(Django数据库模型实例)中获取该值。相关代码如下:
class DatalistFieldMixin: def make_field_datalist(self, field_name, choices, choice_format=lambda c: c): field_val = getattr(self.instance, field_name) or "" # Create the datalist widget while setting the html "value" attribute. # And set the widget as the form field. if self.fields.get(field_name): widget = DatalistWidget( choices=[choice_format(c) for c in choices], attrs={"value": field_val}, ) self.fields[field_name].widget = widget class ObjectAdminForm(DatalistFieldMixin, forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.make_field_datalist( field_name="broadsign_active_container_id", choices=BroadsignContainer.objects.all(), choice_format=lambda c: ( c.container_id, " - ".join((str(c.container_id), c.container_name)), ), )
问题演示动图:
内容的提问来源于stack exchange,提问作者BcK
相关产品推荐
相关产品推荐

