自动将信号连接到自定义Django模型字段

时间:2015-03-28 09:51:26

标签: django model signals custom-fields django-signals

我为Django创建了一个自定义图像字段,可自动创建缩略图并执行其他操作。

from django.db.models.fields.files import ImageFieldFile

class ImageWithThumbsFieldFile(ImageFieldFile):
    def __init__(self, *args, **kwargs):
        ...

现在,我希望自动连接post_delete信号,只要在模型中定义了这样的字段。我知道在定义模型时如何手动连接post_delete信号。但是,只要使用自定义字段,我就有办法自动执行此操作吗?

1 个答案:

答案 0 :(得分:1)

您可以使用contribute_to_class()方法执行此操作:

class ImageWithThumbsFieldFile(ImageFieldFile):
    ...
    def contribute_to_class(self, cls, name, **kwargs):
        super(ImageWithThumbsFieldFile, self).contribute_to_class(
                                                   cls, name, **kwargs)
        post_delete.connect(on_delete_callback, sender=cls)