【发布时间】:2020-06-03 21:02:50
【问题描述】:
我有一个这样的 for 循环:
for category in enums.Category:
category_name = str(category.name)
internal_code = category.internal_code
if category_name in labels and not category.is_temporary_code:
field_label = labels[category_name]
self.fields[internal_code] = forms.BooleanField(label=field_label, required=False)
elif category_name in labels and category.is_temporary_code:
field_label = labels[category_name]
exp_date_label = labels[category_name] + " end date"
self.fields[internal_code] = forms.BooleanField(label=field_label, required=False)
self.fields[internal_code + "_end_date"] = forms.DateField(
label=exp_date_label, required=False
)
但是,这会遍历枚举 Category 实例并按实例的顺序生成结果(表单字段)。我如何编写这个循环,以便每个属于第一个“if”条件的实例首先设置其表单字段,然后循环重新运行以设置第二组实例的表单字段(来自 elif 语句)AFTER?
【问题讨论】:
-
创建两个列表,一个用于第一个项目,一个用于第二个项目。在 if/elif 中,您只需将项目添加到这些列表之一。在 for 循环之后,您循环两个列表的项目,然后添加到表单中。
-
替代方案是两个 for 循环以及一个执行 if/elif 分离的列表推导。我正在打电话,否则我会提供一些代码...
标签: python loops for-loop if-statement