Как создать список выбора из всех ImageSpecs - PullRequest
1 голос
/ 02 ноября 2009

Я хочу создать список выбора для всех спецификаций, которые наследуются от 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]

приводит к выпадающему списку "Отображение, одиночный просмотр, отражение, одиночное отображение"

1 Ответ

2 голосов
/ 02 ноября 2009

Что-то вроде следующего даст вам список всех подклассов 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.

...