Как сохранять картинку в поле одной модели картинку из другой модели, модель связана через ForeignKey

Есть две модели. Нужно чтобы последняя(к слову необязательно именно последнюю картинку, можно любую) из загруженных картинок в галлерею(альбом) сохранялась в поле cover. Пробовал через подобное.

def get_upload_to(instance, filename):
    return os.path.join('gallery', f'{instance.gallery_id.title}', filename)


def get_upload_to_cover(instance, filename):
    return os.path.join('gallery', 'cover'+f'{instance.gallery.title}', filename)

class Gallery(models.Model):
    title = models.CharField()
    cover = models.ImageField(upload_to=get_upload_to_cover)

    def create_cover(self, id):
        last_image = Gallery
.objects.get(id=self.id).photos.all().first()
        self.cover = last_image
        return self.cover

    def save(self, *args, **kwargs):
        self.cover = self.create_cover(self.id)
        super(Gallery, self).save(*args, **kwargs)


class GalleryImage(models.Model):
    gallery_id = models.ForeignKey(Gallery, related_name='photos')
    photo = models.ImageField(upload_to=get_upload_to)

Но не получилось, т.к. скорее всего неправильно сделал функцию create_cover или проблема в save. Пробовал через pk, но тоже не получилось. У кого есть идеи как правильно это реализовать? Возможно надо делать через сигнал, но я не понимаю, как правильно это сделать.

Вот сигнал, который не работает

def save_cover(sender, instance, *args, **kwargs):
    last_image = Gallery.objects.get(pk=instance.pk).photos.all().first()
    instance.cover = last_image
    print(last_image)

post_save.connect(save_cover, sender=Gallery)
Вернуться на верх