Есть ли причина, по которой вы не смогли сделать это, когда объект был сохранен? Потому что это было бы тривиально легко сделать, переопределив метод сохранения в соответствующей модели, например:
def save(self, force_insert=False, force_update=False):
if not self.image:
self.image = foo
super(RelevantModel, self).save(force_insert, force_update)
Конечно, если для вас существует существенная разница между временем первого сохранения объекта и временем первого обращения к определенному полю, то это не решит вашу проблему.