flatten python tuple - django 字段选项 optgroups

flatten python tuple - django field options optgroups

我一直在寻找一种方法来在 django 中展平一个字段的选项,该字段的结构是 optgroup 嵌套元组:

CHOICES = (
  ('', (
        ('value1', 'label1'),
        ('value2', 'label2'),
      )
  ),
  ('Group2', (
        ('value3', 'label3'),
        ('value4', 'label4'),
     )
  ),
)

我想要实现的是一个仅包含值 ['value1', 'value2', 'value3', 'value4'].

的列表

我尝试了 itertools chain、zip 和 sum,但我无法摆脱分组标签,即空字符串 '' 和 'Group2'。有什么想法吗?

谢谢

您可以使用 list comprehension 来做到这一点:

[choice[0] for group in CHOICES for choice in group[1]] 

任何感兴趣的人都可以执行以下操作:

[tuple[0] for tuple in [field].get_flatchoices(False)]