【发布时间】:2021-12-31 02:15:45
【问题描述】:
下面的表单+视图可以正常工作
forms.py
class FormGlobalSettings(forms.Form):
global_font_family = forms.TypedChoiceField(required=False, label='Font Family', choices=choices_font_family, empty_value=None)
views.py
def main_view(request):
if request.method != 'POST':
form_global_settings = FormGlobalSettings()
else:
form_global_settings = FormGlobalSettings(data=request.POST)
if all([form_global_settings.is_valid()]):
cleaned_data = form_global_settings.cleaned_data
nested_data = {"fontFamily": cleaned_data3['global_font_family']}
return JsonResponse(nested_data)
return render(request, 'pbi_theme_app/index.html', {'form_global_settings': form_global_settings})
输出是:
{"fontFamily": "Arial"}
但是,我想要实现的是,有时 POST 请求是空白/空/空,因为用户不希望在此字段中有任何值。 global_font_family 的选项以这种方式设置:
choices_font_family = [(None, ""), ("Arial", "Arial"), etc..]
这意味着如果用户将该字段留空,则结果为无。这导致它在 json 中为 null:
{"fontFamily": null}
现在我要实现的目标是,因为我已将“fontFamily”硬编码到 jsonresponse 中,如果用户决定将该字段为空,我希望整个键值对消失,这意味着整个键,值对 "fontFamily: null 从 jsonresponse 中消失了。
总结一下:我需要以某种方式使 json 中的键动态化,当 POST 请求为空时,我想保留整个键、值对,以免输入到 json 中。
在以下网页上可以看到预期的行为,当您下载主题并且您没有输入任何内容时,它会使整个 json 代码为空:
https://powerbi.tips/tools/report-theme-generator-v3/
谢谢你:)
【问题讨论】: