Django调试工具栏问题在管理中多次保存

Django调试工具栏问题在管理中多次保存,django,django-models,django-admin,Django,Django Models,Django Admin,快把我逼疯了请帮帮我 在管理员中,当我保存一个新项目时,它会将相同的内容保存3次!有人知道为什么吗?只有在安装了运行Django 1.5的Django调试工具栏时才会发生这种情况 settings.py(部分) 模型保存方法 def product_pre_save(sender, instance, **kwargs): """ This is sent at the beginning of a the product save() method. """

快把我逼疯了请帮帮我

在管理员中,当我保存一个新项目时,它会将相同的内容保存3次!有人知道为什么吗?只有在安装了运行Django 1.5的Django调试工具栏时才会发生这种情况

settings.py(部分)

模型保存方法

def product_pre_save(sender, instance, **kwargs):
    """
    This is sent at the beginning of a the product save() method.
    """
    if not instance.pk:
        instance._QRCODE = True
    else:
        if hasattr(instance, '_QRCODE'):
            instance._QRCODE = False
        else:
            instance._QRCODE = True


models.signals.pre_save.connect(product_pre_save, sender=Product)


# def product_pre_delete(sender, instance, **kwargs):
#     """
#     Sent at the beginning of a product delete() method product queryset's delete() method.
#     """
#     if default_storage.exists(instance.qr_image):
#         default_storage.delete(instance.qr_image)

# models.signals.pre_delete.connect(product_pre_delete, sender=Product)

def product_post_save(sender, instance, **kwargs):
    if hasattr(instance, '_already_saving'):
        del instance._already_saving
        return
    if instance._QRCODE:
        instance._QRCODE = False
    if instance.qr_image:
        instance.qr_image.delete()
        # Create url
    instance.qr_url = instance.create_QR_URL()
    qr = QRCode(4, QRErrorCorrectLevel.L)
    qr.addData(instance.qr_url)
    qr.make()
    image = qr.makeImage()


    #Save image to string buffer
    image_buffer = StringIO()
    image.save(image_buffer, format='JPEG')
    image_buffer.seek(0)

    #Here we use django file storage system to save the image.
    file_name = 'UrlQR_%s.jpg' % instance.id
    file_object = File(image_buffer, file_name)
    content_file = ContentFile(file_object.read())
    instance._already_saving = True
    instance.qr_image.save(file_name, content_file, save=True)


models.signals.post_save.connect(product_post_save, sender=Product)

ProfilingDebugPanel使管理模型保存多个数据。他们没有针对该bug的最新提交。到目前为止,他们正在寻找解决方案

更新:

状态:
最终修复,但尚未发布

临时解决方案:

禁用探查器可修复此错误。

若要在该应用程序上获得最新更新,您必须访问他们的网站并推送遇到的问题
def product_pre_save(sender, instance, **kwargs):
    """
    This is sent at the beginning of a the product save() method.
    """
    if not instance.pk:
        instance._QRCODE = True
    else:
        if hasattr(instance, '_QRCODE'):
            instance._QRCODE = False
        else:
            instance._QRCODE = True


models.signals.pre_save.connect(product_pre_save, sender=Product)


# def product_pre_delete(sender, instance, **kwargs):
#     """
#     Sent at the beginning of a product delete() method product queryset's delete() method.
#     """
#     if default_storage.exists(instance.qr_image):
#         default_storage.delete(instance.qr_image)

# models.signals.pre_delete.connect(product_pre_delete, sender=Product)

def product_post_save(sender, instance, **kwargs):
    if hasattr(instance, '_already_saving'):
        del instance._already_saving
        return
    if instance._QRCODE:
        instance._QRCODE = False
    if instance.qr_image:
        instance.qr_image.delete()
        # Create url
    instance.qr_url = instance.create_QR_URL()
    qr = QRCode(4, QRErrorCorrectLevel.L)
    qr.addData(instance.qr_url)
    qr.make()
    image = qr.makeImage()


    #Save image to string buffer
    image_buffer = StringIO()
    image.save(image_buffer, format='JPEG')
    image_buffer.seek(0)

    #Here we use django file storage system to save the image.
    file_name = 'UrlQR_%s.jpg' % instance.id
    file_object = File(image_buffer, file_name)
    content_file = ContentFile(file_object.read())
    instance._already_saving = True
    instance.qr_image.save(file_name, content_file, save=True)


models.signals.post_save.connect(product_post_save, sender=Product)