Как сохранять картинку в поле одной модели картинку из другой модели, модель связана через 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)