Django:更改可选ImageField的url

时间:2011-01-03 08:40:35

标签: python django django-models

通过信号我检查我的模型是否属于某个类别。如果是,我想将可选的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 

1 个答案:

答案 0 :(得分:0)

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

您可能希望这样做的方式是使用Model.clean()

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

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