Как использовать поле файла в django

что еще мне нужно добавить к этому "file = models.FileField()"

вот что я сделал, но все еще не получил никаких результатов, почему так?

    class Course(models.Model):

        TOPIC_CHOICES = (
            ("History", "History"),
            ("Chemistry", "Chemistry"),
            ("Computer", "Computer")
        )

        lecturer = models.ForeignKey(Lecturer, on_delete=models.CASCADE)
        category = models.CharField(choices=TOPIC_CHOICES, max_length=100)
        topic = models.CharField(max_length=250)
        file = models.FileField()
        date_created = models.DateTimeField(default=datetime.now)

        def __str__(self):
            return f"{self.lecturer}: {self.topic}"

Согласно Джанго документации, FileField принимает два опциональных аргумента.

  1. upload_to: Задает каталог загрузки. Значение этого аргумента может иметь несколько типов. Это может быть String, Path или callable функция. Вот пример:
    upload = models.FileField(upload_to='uploads/')
    Если вы хотите определить функцию для этого аргумента, которая возвращает каталог загрузки, вы должны определить ее на основе спецификации Django для такой функции. Функция должна иметь аргументы instance и filename. Вот пример:
def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
    upload = models.FileField(upload_to=user_directory_path)
  1. storage: Объект хранения или вызываемый объект, который возвращает объект хранения. Этот аргумент используется для указания параметров хранения для вашего поля загрузки файлов. Этот аргумент позволяет выбрать подходящую среду хранения во время выполнения.
  2. .
from django.conf import settings
from django.db import models
from .storages import MyLocalStorage, MyRemoteStorage


def select_storage():
    return MyLocalStorage() if settings.DEBUG else MyRemoteStorage()


class MyModel(models.Model):
    my_file = models.FileField(storage=select_storage)

Еще один случай использования этого аргумента - наличие различных сред хранения для разных типов файлов.

from django.conf import settings
from django.db import models
from .storages import LargeFilesStorage

class MyModel(models.Model):
    my_file = models.FileField(storage=LargeFilesStorage())

Поскольку эти аргументы необязательны, вы можете создать FileField без них. По умолчанию эти аргументы имеют следующие значения: upload_to='', storage=None

Вернуться на верх