Skip to main content
 首页 » 编程设计

python之Django:更改可选 ImageField 的 url

2025年05月04日7me-sa

通过信号我检查我的模型是否属于一个类别。如果是,我想将可选的 ImageField 更改为特定的 url。

如何实现?下面的代码不起作用,我收到“无法设置属性”错误,因为它是一个可选字段,并且在我保存时它是空白的。

这是我的示例模型

class Foo(models.Model): 
    category = models.IntegerField(max_length=1) 
    poster = models.ImageField(u"Poster", blank=True) 

和我的帖子保存信号:

def post_poster(instance, **kwargs): 
        if instance.category == 1 #a specific category 
            instance.poster.url = u'/media/special_image_for_1.png' 
            instance.save() 
    except MovieCat.DoesNotExist: 
        pass  

请您参考如下方法:

您没有说明您遇到了什么问题(该代码有效吗?),因此您的代码中存在两个问题。首先,您可能不想保存在保存后信号中(无限循环,有人吗?)。 其次,您遇到了缩进问题(您需要在 if 之后缩进)。

您可能想要执行此操作的方式是使用 Model.clean() .

像这样在你的模型上定义一个clean方法:

def clean(self): 
  if instance.category == 1 #a specific category 
    instance.poster.url = u'/media/special_image_for_1.png'