您如何看待该解决方案?
@receiver(post_save, sender=Article)def generate_thumbnails(sender, instance=None, created=False, **kwargs): if not instance: return if hasattr(instance, '_dirty'): return do_something() try: instance._dirty = True instance.save() finally: del instance._dirty
您也可以创建装饰器
def prevent_recursion(func): @wraps(func) def no_recursion(sender, instance=None, **kwargs): if not instance: return if hasattr(instance, '_dirty'): return func(sender, instance=instance, **kwargs) try: instance._dirty = True instance.save() finally: del instance._dirty return no_recursion@receiver(post_save, sender=Article)@prevent_recursiondef generate_thumbnails(sender, instance=None, created=False, **kwargs): do_something()



