Skip to main content
 首页 » 编程设计

python之子类化 Django ImageFileField

2025年05月04日31mq0036

我有兴趣将 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?