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

Automatically connect signals to custom Django model fields

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

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

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

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

你可以在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)