我对子类化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 say到read 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
?