Как сохранить модель django с несколькими изображениями?

Уже час бьюсь, но видимо чего-то не понимаю. Есть задача написать скрапер с админпанелью django и тут все хорошо и работает. Теперь мне нужно сохранить все данные в базу данных и вот тут проблема, в админ панели django появляется только одна фотография, но все загружается в папку media.

# models.py
from django.db import models


class Apartment(models.Model):
    rooms = models.CharField('кол-во комнат', max_length=64)
    price = models.CharField('цена', max_length=10)
    address = models.CharField('Адрес', max_length=256)
    desc = models.TextField('описание')
    floor = models.CharField('этаж', max_length=5)

    def __str__(self):
        return self.address

    class Meta:
        verbose_name = 'квартира'
        verbose_name_plural = 'квартиры'


class Image(models.Model):
    apartment = models.ForeignKey(Apartment, on_delete=models.CASCADE)
    img = models.ImageField(upload_to='media/')

    class Meta:
        verbose_name = 'фото'
        verbose_name_plural = 'фото'


class Url(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    url = models.URLField('ссылка')

    def __str__(self):
        return self.url

    class Meta:
        verbose_name = 'ссылка'
        verbose_name_plural = 'ссылки'
        ordering = ['-created']

#save function 
def save_data(apartments_list):

    for ap in apartments_list:
        im = Image()
        try:
            apartment = Apartment.objects.create(
                rooms=ap['rooms'],
                price=ap['price'],
                address=ap['address'],
                desc=ap['desc'],
                floor=ap['floor'],
            )
            for image in ap['photos']:
                pic = urllib.request.urlretrieve(image, image.split('/')[-1])[0]
                im.img = im.img.save(pic, File(open(pic, 'rb')))
                im.apartment = apartment
        except Exception as e:
            print(e)
            break

Ваша проблема в том, что вы не сохраняете изображение .
попробуйте изменить это

def save_data(apartments_list):

    for ap in apartments_list:
        im = Image()
        try:
            apartment = Apartment.objects.create(
                rooms=ap['rooms'],
                price=ap['price'],
                address=ap['address'],
                desc=ap['desc'],
                floor=ap['floor'],
            )
            for image in ap['photos']:
                pic = urllib.request.urlretrieve(image, image.split('/')[-1])[0]
                im.img = im.img.save(pic, File(open(pic, 'rb')))
                im.apartment = apartment
        except Exception as e:
            print(e)
            break

to

def save_data(apartments_list):

    for ap in apartments_list:
        im = Image()
        try:
            apartment = Apartment.objects.create(
                rooms=ap['rooms'],
                price=ap['price'],
                address=ap['address'],
                desc=ap['desc'],
                floor=ap['floor'],
            )
            for image in ap['photos']:
                pic = urllib.request.urlretrieve(image, image.split('/')[-1])[0]
                im.img = im.img.save(pic, File(open(pic, 'rb')))
                im.apartment = apartment
                im.save() #new
        except Exception as e:
            print(e)
            break
Вернуться на верх