Django: изменение URL-адреса необязательного ImageField - PullRequest
1 голос
/ 03 января 2011

С помощью сигналов я проверяю, относится ли моя модель к категории.Если это так, я хочу изменить свой необязательный 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 голосов
/ 03 января 2011

Вы не говорите, какая у вас проблема (этот код работает?), Поэтому в вашем коде есть две проблемы.Во-первых, вы, вероятно, не хотите сохранять в сигнале после сохранения (бесконечный цикл, кто-нибудь?). Во-вторых, у вас есть проблема с отступом (вам нужно сделать отступ после if).

Вероятно, вы захотите сделать это с Model.clean().

Определите метод clean для вашей модели следующим образом:

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