相关疑难解决方法(0)

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

在我的模型中,我有:

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
Run Code Online (Sandbox Code Playgroud)

这首次remote_image变化很有效.

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

django caching image django-models

273
推荐指数
13
解决办法
14万
查看次数

禁止更新 django 模型字段

我有以下模型:

class Project(models.Model):

    name = models.CharField(max_length=200)

class Task(models.Model):

    name = models.CharField(max_length=200)

    project = models.ForeignKey('Project', on_delete=models.CASCADE,
                                related_name='tasks')
Run Code Online (Sandbox Code Playgroud)

我希望能够在创建过程中为任务选择项目,并在任务创建后禁止更改它。

如何Task.project在创建期间可编辑但在数据库/模型级别更新期间不可编辑?

到目前为止的方法:

  1. 可编辑=假选项

    • 这适用于管理员/表单级别,而不适用于数据库级别
  2. 在 django admin 中将字段设为只读

    • 这也适用于管理员/表单级别,而不适用于数据库级别

django django-models

3
推荐指数
1
解决办法
1724
查看次数

标签 统计

django ×2

django-models ×2

caching ×1

image ×1