代码之家  ›  专栏  ›  技术社区  ›  Krish V

如何避免presave Django中的模型编辑

  •  0
  • Krish V  · 技术社区  · 6 年前

    我正在尝试立即保存在Django模型中,这将触发一个事件。更新此模型时,触发 start\u事件 一次又一次。如何仅在第一次保存时触发事件而不在更新中?

    Image(models.Model):
        file_name = models.CharField(max_length=200)
        file_path = models.CharFiedld(max_length=500)
        def save(self, *args, **kwargs):
            start_event(self.file_path)
            super(Image, self).save(*args, **kwargs)
    

    首先使用此模型创建和更新。 创造

    from models import Image
    image = Image()
    image.file_path = "path/to/file"
    image.save()
    

    活动完成后将使用 使现代化

    from models import Image
    image = Image.objects.get(file_path='path/to/file')
    image.file_name = "file/name"
    image.save()
    

    如何仅在第一次保存时触发事件(start\u事件)而不在更新中?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Krish V    6 年前

    @Zev您的信息帮助了它!从链接 Django - Overriding the Model.create() method? 找到了解决方案。

    def save(self, *args, **kwargs):
        if not self.pk: # Checking if the oject has no pk
            start_event(self.file_path)
        super(Image, self).save(*args, **kwargs)