Как мне установить файл по умолчанию для `models.FileField ()`? - PullRequest
0 голосов
/ 29 мая 2020

Как мне установить файл по умолчанию для models.FileField()?

class MyModel(models.Model):
    myfile = models.FileField(upload_to='mydocs', default=???)

Ответ будет выглядеть так:

myfile=models.FileField(upload_to='mydocs', default='mydocs/myfile.pdf')

Однако это не приводит к желаемому поведению, когда создание нового объекта.

Тогда как для других полей, таких как CharField, значение default= отображается в новой форме как значение виджета. Однако для FileField это не так, это все равно приводит к тому, что «файл не выбран»:

enter image description here

Так как же установить значение по умолчанию? Должны ли мы попытаться создать новый экземпляр FieldFile? Нам нужно создать файловый объект?

1 Ответ

0 голосов
/ 30 мая 2020

возможно, вы не указали MEDIA_ ROOT по умолчанию в настройках django. Попробуйте определить это так:

def get_default(self):
    if self.myfile:
        return self.myfile
    else:
        return settings.MEDIA_ROOT + '/mydocs/myfile.pdf'

myfile=models.FileField(upload_to='mydocs', default=get_default)

в вашем settings.py, добавьте:

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

в свой urls.py, добавьте в конец:

urlpatterns += static(settings.MEDIA_URL,
                      document_root=settings.MEDIA_ROOT)
...