如何获取 Django 模型中所有带有选择的字段?
优质博文:IT-BLOG-CN
问题
我有一个 Django 模型,其中有十几个带有选择选项的字段,我想序列化它们的值以写入 CSV 文件。
我如何遍历字段以找到具有选项的字段?像这样:
for field in MyModel._meta.fields:
if field.has_choices_on_it():
print(f.name)
解决方案
每个字段都有一个.choices默认值None,因此我们可以检查它是否为None。但请注意,它.choices 不一定是一系列值,也可以是在需要时生成值的函数(例如,因为它发出数据库请求、使用 API 等)。
for field in MyModel._meta.fields:
if field.choices is not None:
print(f.name)
choices = field.choices
if callable(choices):
choices = choices()
print(choices)