Объединенный путь расположен за пределами компонента базового пути - загрузка изображения Django
Пишет ошибку: The joined path (E:\product-img\237\236130.jpg) is located outside of the base path component (E:\SITE\pythonProject\mysite\static\media) Как вывести в шаблоне правильно?
models
from imagekit.models import ImageSpecField
from pilkit.processors import Thumbnail
class Product(models.Model):
id_p = models.BigIntegerField(primary_key=True, db_index=True, unique=True, verbose_name='ID продукта')
artikul = models.CharField(max_length=200, db_index=True, blank=True, verbose_name='Артикул')
brend = models.CharField(max_length=200, db_index=True, blank=True, verbose_name='Бренд для поиска')
analog = models.CharField(max_length=255, blank=True, verbose_name='Аналоги артикула')
category = models.ForeignKey(Category,blank=True, on_delete=models.CASCADE, related_name='products', verbose_name='Категория')
brand = models.ForeignKey(Brand, on_delete=models.PROTECT, verbose_name='Бренд')
product_sklad = models.ForeignKey(Sklad, on_delete=models.CASCADE, default=1, verbose_name='ID поставщика')
product_time = models.IntegerField(default=0, verbose_name='Срок доставки ( дн.)')
name = models.CharField(max_length=200, blank=True, verbose_name='Название продукции')
#Переопределение имени и путя фотографии
def get_path_upload_image(instance, filename):
filename = f'{instance.id_p}' + '.jpg'
# путь, куда будет осуществлена загрузка MEDIA_ROOT/product-img/<filename>
return 'product-img/{0}/{1}'.format((int(instance.id_p / 1000) + 1), filename)
image = models.ImageField(upload_to=get_path_upload_image, verbose_name='Фото A', blank=True, null=True,
help_text="Фото продукта автоматитчески сохраняется под ID продукта")
image_thumbnail = ImageSpecField(source='image',
processors=[Thumbnail(200, 100)],
format='JPEG',
options={'quality': 60})
def __str__(self):
return f'{self.id_p}'
def get_absolute_url(self):
return reverse('shop:product_detail',
args=[self.category.category_id, self.id_p])
html
<img src="{{ product.image_thumbnail.url }}">
settings
STATIC_URL = 'static/'
if DEBUG:
STATICFILES_DIRS = (
BASE_DIR / 'static',
)
else:
STATIC_ROOT = BASE_DIR / 'static'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static", "media")
urls
from django.conf.urls.static import static
from shop import views
urlpatterns = [
path('admin/', admin.site.urls),
] \
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)