欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

成功解决: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

相关标签: 其他