Почему валидатор расширений файлов не работает должным образом в django?

Я пытаюсь добавить валидатор расширения файла в поле File моей модели. Но когда я добавляю файл с другим расширением через мой сериализатор, он добавляет расширения, которые я не указал в моем validators.py

Вот код на данный момент

# validators.py
def validate_file_extension(value):
    import os
    from django.core.exceptions import ValidationError
    ext = os.path.splitext(value.name)[1]  # [0] returns path+filename
    valid_extensions = ["png", "jpg", "jpeg",  # for images
                        "pdf", "doc", "docx", "txt",  # for documents
                        "mp3", "aac", "m4a", "mp4", "ogg"]  # for audios
    if not ext.lower() in valid_extensions:
        raise ValidationError('Unsupported file extension.')

#models.py
class QuestionFile(models.Model):
question = models.ForeignKey(
    Question, on_delete=models.CASCADE, related_name='files', null=True, blank=True)
FILE_TYPE = (
    ('NONE', 'NONE'),
    ('IMAGE', 'IMAGE'),
    ('DOCUMENT', 'DOCUMENT'),
    ('AUDIO', 'AUDIO'),
)
file_type = models.CharField(
    choices=FILE_TYPE, max_length=50, null=True, blank=True)
file = models.FileField(
    'files', upload_to=path_and_rename, max_length=500, null=True, blank=True, validators=[validate_file_extension])

def __str__(self):
    return str(self.question)

и вот вывод в моем сериализаторе для этой модели

"id": ..,
"file": "<filepath>/c-f479b7453519484b827dbc0051bd9a64.html",
"file_type": ..,
"question": ..

Как видно, хотя расширение .html не добавлено в validators.py, оно все равно загружается. Может я допустил какие-то ошибки в коде? Я не могу понять это. Если необходима какая-либо другая информация, дайте мне знать, пожалуйста.

Спасибо

Простая ошибка, Ваш список должен быть таким:

valid_extensions = ['.jpg', '.png', '.mp3'] 

и когда вы используете:

import os
text = "/path/to/file/file.jpg"

name = os.path.splitext(text)

then

if name[1].lower() in valid_extensions:
  pass
Вернуться на верх