You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:17:02