python - clean_data 中的有效 POST 参数值为空
问题描述
当通过我的表单发布数据时,一些字段变为空,None
或者''
在cleaned_data
. 它们被正确传递并且仍然存在于request.POST
. 例如:
表格.py
class NotificationForm(forms.ModelForm):
WEEKDAY_OPTIONS = no_chosen_day + [
(i, v)
for i, v in enumerate(calendar.day_name)
]
schedule_weekday = forms.ChoiceField(
choices=WEEKDAY_OPTIONS,
label="Day of the week",
disabled=True,
required=False,
)
def clean_schedule_weekday(self):
__import__('pprint').pprint(self.cleaned_data)
模型.py
class Notification(models.Model):
notification_id = models.AutoField(primary_key=True)
schedule_weekday = models.SmallIntegerField(blank=False, null=False)
中没有其他清洁方法forms.py
。方法中的字段值已经为空clean_schedule_weekday
:
{'schedule_weekday': '',}
虽然打印出来request.POST
仍然views.py
给出:
{'csrfmiddlewaretoken': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'schedule_weekday': '0'}
为什么?
解决方案
事实证明,原因是我设置disabled=True
了在类 vars 中定义字段的位置。相反,它必须设置在___init__()
:
self.fields['schedule_weekday'].widget.attrs['disabled'] = True
推荐阅读
- .net - 从 .Net UI 在 Databricks 上运行 Spark SQL 查询
- gatsby - 盖茨比没有安装
- amazon-web-services - AWS Lightsail Wordpress Multisite - 无法访问弹性 IP
- python - 文件选择后Tkinter照片没有改变
- javascript - D3 TopoJSON 渲染神器
- python - pandas.DataFrame.round() 不接受 pd.NA 或 pd.NAN
- r - 在 R Markdown PDF 文档中更改单个块中输出的字体大小
- c++ - C++ 文件支持的树状数据结构
- azure - 是否可以重命名 Azure Synapse SQL 池?
- python - 通过删除所有未使用的包和缓存来清理 pip