Как скачать файл с FileField?

Для скачивания файла, сохраненного в поле FileField, в Django, вам потребуется выполнить следующие шаги:

1. Создайте представление (view), которое будет обрабатывать запрос на скачивание файла.

from django.http import HttpResponse
from django.core.servers.basehttp import FileWrapper
from django.conf import settings
import os

def download_file(request):
    file_path = os.path.join(settings.MEDIA_ROOT, 'path_to_your_file') # Замените 'path_to_your_file' на путь к файлу внутри поле FileField

    with open(file_path, 'rb') as file:
        file_wrapper = FileWrapper(file)
        response = HttpResponse(file_wrapper, content_type='application/octet-stream')
        response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_path)

    return response

2. В настройках проекта необходимо установить MEDIA_ROOT, чтобы задать корневую директорию для сохранения файлов. Это может быть сделано путем добавления строки в файл settings.py:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

3. В файле urls.py проекта, добавьте соответствующий маршрут:

from django.urls import path
from .views import download_file

urlpatterns = [
    path('download/', download_file, name='download'),
]

Теперь, когда вы перейдете по URL-адресу /download/ в браузере, файл, хранящийся в поле FileField, будет загружен на компьютер пользователя.

Убедитесь, что заменили 'path_to_your_file' на путь к файлу, которым вы хотите поделиться. Также не забудьте добавить подходящий шаблон и URL маршрут для вашего представления download_file.