我只是 django query-fu 的棕带。所以也许这里有一些我不知道的新技巧。
这是我的模型:
SCHOOL_TYPES = (('elementary', 'Elementary Schools'), ('middle', 'Middle Schools'), ('junior_high', 'Junior High Schools'), ('high_school', 'High Schools'), ('other', "Other"))
class School (BaseSlugModel):
name=CharField(max_length=100)
school_type = models.CharField(max_length=20, choices=SCHOOL_TYPES)
出于 UI 目的,我想编写一个函数,该函数get_active_school_types
返回 SCHOOL_TYPES 元组的子集,其中包含 1 个或多个学校。有没有比蛮力更有效的方法来做到这一点,得到所有学校然后循环通过它们的方法?
编辑:这是我的解决方案,基于西蒙的回答:
active_types = School.objects.values_list('school_type', flat=True).distinct()
return [ school_type for school_type in SCHOOL_TYPES if school_type[0] in active_types]