Рабочая часть выглядит следующим образом:
file = models.FileField(upload_to=upload_file)
Метод определяется как:
def upload_file(instance, filename):
return '{user}/{filename}'.format(user=instance.user, filename=filename)
В settings.py
У меня установлены следующие пути:
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')
MEDIA_URL = '/media/'
(...)
# For reference:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
После загрузки файла через интерфейс администратора появляется сообщение об успешном завершении, и файл появляется в папке static/media/admin/<file>
.Каталог static
находится в BASE_DIR
, на том же уровне, что и db.sqlite3
, упомянутый в приведенной выше выдержке.
Однако при отображении местоположения изображения в API я получаю что-то вроде:
"file": "http://127.0.0.1:8000/media/uploads/admin/<file>"
Как вы ясно видите, каталог static
пропущен, и после нажатия на ссылку я получаю 404.
Что нужно исправить, чтобы он работал в Django 2.2?