Построение ответа neverwalkaloner здесь, я попытался перенести атрибут модели моего изображения из CharField в ImageField и затем установить MEDIA ROOT
& MEDIA URL
в settings.py
.
Мое понимание, чтение документации:
здесь (как Django обрабатывает файлы) ,
здесь (что означают MEDIA URL и MEDIA ROOT) ,
и здесь (что такое ImageField и его различные аргументы) , Django будет обрабатывать абсолютный путь к файлу конкретного ImageField
на основе настроек upload_path
&. Поэтому я проверил это в оболочке. Пока что это не работает.
ОБНОВЛЕНО ПОПЫТКА НА ПРОДУКТ *
В settings.py
:
MEDIA_ROOT = BASE_DIR + '/project' + '/media/'
MEDIA_URL = '/media/'
In models.py
:
from django.db import models
class Product(models.Model):
sku = models.CharField(validators=[isalphanumeric], max_length=20, null=False, blank=False)
image = models.ImageField(upload_to="products/" max_length=20, blank=False, null=False)
Тестирование в оболочке Python Django:
In [1]: from app.models import Product
In [2]: test_product = Product(sku='alphanumeric23', image='test_product.png')
In [3]: test_product.image.path
Out [3]: 'C:\\Users\\user\\path\\to\\project\\project\\media\\test_product.png'
Но мой ожидаемый результат должен был быть:
'C:\\Users\\user\\path\\to\\project\\project\\media\\product\\test_product.png'
Почему я не получаю правильный URL-адрес?
Это потому, что технически не было загружено с помощью вызова test_product.save ()?
Что я делаю не так?