问题描述

  • 首先,​​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()​​ 来获取中文名了