Я попытался выполнить фильтрацию для поля расширения, которое на самом деле вовсе не является полем, как следует из следующего примера. Для этого примера давайте представим, что у нас есть запущенный Django с установленным django-filer и уже загруженным файлом.
>>> from filer.models import File
>>> File.objects.all()[0].extension
'some_ext' # just as example
Но при попытке фильтрации:
>>> File.objects.filter(extension='pdf')
django.core.exceptions.FieldError: Cannot resolve keyword 'extension'
into field. Choices are: _file_size, clipboarditem, description,
downloadfilemodel, file, filer_image_file, folder, folder_id,
has_all_mandatory_data, id, in_clipboards, is_public, modified_at,
name, news_attachment, original_filename, owner, owner_id,
polymorphic_ctype, polymorphic_ctype_id, sha1, uploaded_at
Это связано с тем, что расширение не хранится вместе с моделью, а фактически является вычисляемым свойством.
Мой вопрос: в чем причина того, что эти метаданные не хранятся в файловой модели.
Обновление: я не жалуюсь на реализацию. Прошу возможную мотивацию реализации.