Python Django:更改可选ImageField的url

Python Django:更改可选ImageField的url,python,django,django-models,Python,Django,Django Models,通过信号,我检查我的模型是否属于某一类别。如果是,我想将可选的ImageField更改为特定的url 如何做到这一点?下面的代码不工作,我得到“无法设置属性”错误,因为它是一个可选字段,并且在保存时为空 这是我的样品模型 class Foo(models.Model): category = models.IntegerField(max_length=1) poster = models.ImageField(u"Poster", blank=True) 我的post保存信号

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

如何做到这一点?下面的代码不工作,我得到“无法设置属性”错误,因为它是一个可选字段,并且在保存时为空

这是我的样品模型

class Foo(models.Model):
    category = models.IntegerField(max_length=1)
    poster = models.ImageField(u"Poster", blank=True)
我的post保存信号:

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 

您没有说您遇到了什么问题(代码是否工作?),因此代码中有两个问题。首先,您可能不想在保存后信号(无限循环,任何人?)中保存。其次,您遇到了缩进问题(如果
,则需要在
之后缩进)

你可能想这样做的方式是使用

在模型上定义
clean
方法,如下所示:

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

你知道,这不是一个正确的python语法。请原谅我的匆忙,现在我编辑了问题部分并正确设置了缩进。