Динамические модели Django. FileField Storage - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть такая модель:

class Person(models.Model):
    name = models.Charfield(max_length¶=30)
    photo = models.FileField(upload_to='uploads/')

Есть ли способ динамического изменения поля Storage класса photo на основе значения поля name?

например, я хочу сохранить фотографию людей с именем от xxx до FileSystemStorage¶, а для остальных я хочу использовать S3Storage

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Похоже, вам нужно создать собственную систему хранения. Официальные документы говорят о том, как это сделать: https://docs.djangoproject.com/en/2.2/howto/custom-file-storage/

Затем вы передадите свою систему хранения в FileField:

photo = models.FileField(storage=MyStorage(),    # Make sure to instantiate with ()
                         upload_to='uploads/')
0 голосов
/ 08 ноября 2018

Да, вы можете назначить пользовательское место загрузки для определенного файла.

def my_upload_function(instance, filename):
    if instance.name === your_name:
        return your_location

    return generic_location


class Person(models.Model):
    name = models.Charfield(max_length¶=30)
    photo = models.FileField(upload_to=my_upload_function)
...