如何获取Django模型中所有带Choices选项的字段?
如何在Django模型中找出带Choices选项的字段
要遍历Django模型字段并筛选出带有Choices选项的字段,核心是检查字段的choices属性——当字段定义了choices参数时,该属性会包含对应的选项列表,否则为空。
正确的遍历筛选代码
from myapp.models import MyModel for field in MyModel._meta.fields: # 判断字段是否带有Choices选项 if field.choices: print(field.name)
序列化Choices字段值到CSV的补充说明
如果要将Choices字段的显示文本(而非数据库存储的原始值)写入CSV,可以使用模型实例的get_<field_name>_display()方法:
import csv # 获取目标模型的实例列表 instances = MyModel.objects.all() # 筛选出所有带Choices的字段名 choice_fields = [field.name for field in MyModel._meta.fields if field.choices] with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) # 写入CSV表头 writer.writerow(choice_fields) # 逐行写入实例的Choices字段显示值 for instance in instances: row_data = [] for field_name in choice_fields: display_value = getattr(instance, f'get_{field_name}_display')() row_data.append(display_value) writer.writerow(row_data)
内容的提问来源于stack exchange,提问作者Josir
相关产品推荐
相关产品推荐

