Как убедиться, что файл существует в проекте Django? - PullRequest
0 голосов
/ 30 мая 2018

Привет, удивительные люди!

Мой вопрос прост, поскольку заголовок четко его описывает.

У меня есть FileField, в некоторых моделях я добавил метод свойствачтобы проверить наличие файла:

@property
def file_exists(self):
    # Because sometimes, the field may contain the string path
    # but the file doesn't exist at all in the server
    if file: # if the string path exists
        return os.path.exists(self.file.path) # If the file exists in server

Это прекрасно работает в процессе разработки, но когда я переносу все мои файлы на AWS, возникает ошибка, такая, что у меня нет разрешения на это.

Интересно, что не так или есть другой способ проверить, существует ли файл?

Заранее спасибо!

Ответы [ 2 ]

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

Это может также сработать.Попробуйте открыть file и вернуть True, если Исключение , верните False.

@property
def file_exists(self):
    try:
        with open(self.file.path):
            return True
    except Exception:
        return False
0 голосов
/ 30 мая 2018

Вы должны использовать метод Storage.exists(), не зависящий от хранилища.

Объект хранилища должен быть доступен на самом FieldFile, поэтому что-то вроде

return self.file.storage.exists(self.file.name)

должен сделать трюк.

...