如何从所有图像规范生成选择列表

时间:2009-11-02 17:13:04

标签: python django imagekit django-imagekit

我想为从imagekit.specs.ImageSpec继承的所有规范生成一个选择列表。

这个想法是允许管理界面的用户选择一个ImageSpec来添加到图片中。

即:

class Display(ImageSpec):
    pre_cache = True
    increment_count = True
    processors = [ResizeDisplay,]

class SingleDisplay(ImageSpec):
    pre_cache = True
    increment_count = True
    processors = [SingleDisplayResize]

class Reflection(ImageSpec):
    increment_count = True
    processors = [ResizeDisplay, ReflectionProcessor]

class SingleDisplayReflection(ImageSpec):
    increment_count = True
    processors = [SingleDisplayResize, ReflectionProcessor]

会产生一个下拉列表“Display,Singledisplay,Reflection,Singledisplayreflection”

1 个答案:

答案 0 :(得分:2)

嗯,类似下面的内容将为您提供文件中定义的所有ImageSpec子类的列表:

def subclassfilter(x, baseclass):
    return x is not baseclass and isinstance(x, type) and issubclass(x, baseclass)

subclasses = [c for c in locals().values() if subclassfilter(c, ImageSpec)]

然后,您可以从__name__列表中每个类的subclasses属性生成选项列表。

相关问题