当前位置: 首页 > 面试题库 >

保存时,如何检查字段是否已更改?

卓云
2023-03-14
问题内容

在我的模型中,我有:

class Alias(MyBaseModel):
    remote_image = models.URLField(max_length=500, null=True, help_text="A URL that is downloaded and cached for the image. Only
 used when the alias is made")
    image = models.ImageField(upload_to='alias', default='alias-default.png', help_text="An image representing the alias")


    def save(self, *args, **kw):
        if (not self.image or self.image.name == 'alias-default.png') and self.remote_image :
            try :
                data = utils.fetch(self.remote_image)
                image = StringIO.StringIO(data)
                image = Image.open(image)
                buf = StringIO.StringIO()
                image.save(buf, format='PNG')
                self.image.save(hashlib.md5(self.string_id).hexdigest() + ".png", ContentFile(buf.getvalue()))
            except IOError :
                pass

第一次remote_image修改效果很好。

有人修改remote_image别名上的时,如何获取新图像?其次,是否有更好的方法来缓存远程映像?


问题答案:

本质上,你想覆盖__init__方法,models.Model以便保留原始值的副本。这样一来,你就不必进行其他数据库查找(这总是一件好事)。

class Person(models.Model):
    name = models.CharField()

    __original_name = None

    def __init__(self, *args, **kwargs):
        super(Person, self).__init__(*args, **kwargs)
        self.__original_name = self.name

    def save(self, force_insert=False, force_update=False, *args, **kwargs):
        if self.name != self.__original_name:
            # name changed - do something here

        super(Person, self).save(force_insert, force_update, *args, **kwargs)
        self.__original_name = self.name


 类似资料:
  • 问题内容: 我已经创建了一些文档并设法进行了一些简单的查询,但是我无法创建一个查询来查找仅存在字段的文档。 例如,假设这是一个文档: 现在,我需要一个查询,该查询将把所有文档包含文本的地方都带进去。 如果没有文本,则将如下所示: 因此,我想检查中该字段的存在。 我该如何实现? 问题答案: 您可以将运算符与符号结合使用。mongo-shell中的裸查询应如下所示: Java中的测试用例可能如下所示:

  • 我有一个名为的收藏。所有的公司都会像我的截图一样存储起来。 当我添加另一家公司时,我想检查是否已经存在。如何做到这一点? 在这里,“新星”和“Tradetech”是两家公司。 当我再次尝试在字段中添加“Nova”时,我想显示一个通知:“公司已经存在!”。

  • 问题内容: Mysql,检查字段值是否更改?如果更改值,则显示不同的值 table:一个 在此查询数据之类的。 大小更改时,我需要更改索引。我想获取此类数据。喜欢。 问题答案: 这应该可以解决问题: 输出: 在这里摆弄。

  • 问题内容: 我试图找到一种聪明的方法来找出传递给sed的文件是否已成功更改。 基本上,我想知道文件是否已更改,而不必查看文件修改日期。 我之所以需要这样做,是因为如果sed成功替换了模式,我需要做一些额外的事情。 我目前有: 上面的代码有点贵,我希望能够在这里使用一些技巧。 问题答案: 您可以改用: ” 我忽略了该功能:您可以根据需要使用Shell做重定向。 叹。下面有许多评论要求提供有关shel

  • 问题内容: 我已经看到很多人使用这种方法来检查laravel模型是否已保存。所以现在我想知道这是否是一种安全的方法。 而且我还可以检查以下查询是否已执行 检查模型是否保存 例如: 以上是检查模型是否保存的安全方法吗? 检查查询是否返回结果 例如: 如果找不到产品,以上内容是否会返回错误? 检查查询是否执行 例如: 上面是否检查用户是否已创建? 问题答案: 检查模型是否保存 会返回一个布尔值,保存或

  • 问题内容: 我想在Swing中检查用户名和密码。 该检查适用于用户名,但不适用于JPaswordfield。我正在发布相关代码: 问题答案: 非常简单地获取文本,使用该文本返回文本的a,然后简单地获取数组的长度并检查它是否等于0: