成功解决:ModelForm.save() 返回的instance对象,无法通过get_xx_display获取choice的中文
程序员文章站
2024-02-04 13:14:34
ModelForm.save() 返回的instance对象,无法通过get_xx_display获取choice的中文...
问题描述
- 首先,
models.py
中主要i源代码如下:
class FileModelForm {
user = models.CharField(verbose_name="用户名", max_length=32)
file_type_choices = (
(1, '文件'),
(2, '文件夹')
)
file_type = models.SmallIntegerField(verbose_name='类型', choices=file_type_choices)
}
- 然后,对数据进行 save, 代码如下
form = FileModelForm(data=request.POST)
form.instance.user = 'ruochen'
form.instance.file_type = 1
instance = form.save()
- 保存后,理论上我们可以通过
instance.user
获取用户名,通过instance.get_file_type_display()
获取choice 的中文,即 “文件”。但是实际上 save() 之后通过instance.get_file_type_display()
获取到的一直是 “1”, 获取不到其中文名称。
解决方法
- 我们可以通过字典解决,代码如下:
form = FileModelForm(data=request.POST)
data_dict = form.cleaned_data
data_dict.update({'user': 'ruochen', 'file_type': 1})
instance = models.FileRepository.objects.create(**data_dict)
- 这样,在保存之后,就可以通过
instance.get_file_type_display()
来获取中文名了
本文地址:https://blog.csdn.net/qq_29339467/article/details/107578187