как разрешить SVG в django 3,0 в моделях - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу загрузить изображения svg из моделей администратора, как я могу включить это? или разрешено указывать c расширения, такие как другие .webp, .docx и pdf et c.

1 Ответ

0 голосов
/ 19 апреля 2020

Ну, когда вы хотите, чтобы ваши пользователи загрузили изображение, вы должны использовать models.ImageField() в соответствующей модели. Для других типов носителей вы можете использовать models.FileField() и создать собственный валидатор, чтобы проверить, хотите ли вы .docx или .pdf, et c.

Создайте файл validators.py в папке вашего приложения и добавьте функцию:

from django.core.exceptions import ValidationError
import os

def validate_file_extension(value):
    ext = os.path.splitext(value.name)[1]  # [0] returns path & filename
    valid_extensions = ['.pdf', '.doc', '.docx', '.jpg', '.png', '.xlsx', '.xls'] # populate with the extensions that you allow / want
    if not ext.lower() in valid_extensions:
        raise ValidationError('Unsupported file extension.')

Затем в вашем models.py:

from .validators import validate_file_extension

И, наконец, используйте валидатор для поля вашей модели:

class Document(models.Model):
    file = models.FileField(upload_to="documents/", validators=[validate_file_extension])

См. также:

...