我对子类化django的ImageFileField感兴趣,以允许访问图像IPTC元数据,例如:

>>> from myapp.models import SomeModel
>>> obj = SomeModel.objects.all()[0] # or what have you
>>> obj.image.iptc['keywords']
('keyword','anotherkeyword','etc')


...我所做的docs sayread over django's internal code;我试图产生一个可行的实现,但是我不确定自己在做什么—我之前已经定义了自定义字段,但是我无法为基于文件的字段提供样板设置。

我知道我需要定义一个attr_class和一个descriptor_class使其起作用。有没有人可以直接入门的简单示例或建议?

最佳答案

从您的问题尚不清楚:您是否尝试过类似的方法?

class ImageMetadataMixin(object):
    """Mixin can be added to any image file"""
    @property
    def iptc(self):
        """Or something like this"""

class ImageWithMetadataFieldFile(ImageMetadataMixin, ImageFieldFile):
    pass

class ImageWithMetadataField(ImageField):
    attr_class = ImageWithMetadataFieldFile


我认为这都是必要的。为什么您认为需要重新定义descriptor_class

09-27 12:24