Django FileField с пользовательским хранилищем по-прежнему загружается в хранилище по умолчанию (GoogleCloudStorage)
Я хочу загружать файлы в пользовательское хранилище, отличное от статического. Но каждый раз, когда я пытаюсь объявить пользовательское хранилище google cloud storage bucket, оно по-прежнему ссылается на хранилище, связанное со статикой (возможно, на хранилище по умолчанию)
Я пытаюсь объявить новый класс из класса wagtail AbstractDocument class
class VirtualVisitDocs(AbstractDocument):
file = models.FileField(storage=CustomGoogleCloudStorage(), verbose_name=_('file'))
Затем используем его как внешний ключ для другой страницы wagtail с панелью выбора документов следующим образом:
virtual_visit = models.ForeignKey(
VirtualVisitDocs,
on_delete=models.SET_NULL,
verbose_name=_('Virtual Visit Zip File'),
related_name='promotion_pages',
null=True,
blank=True,
)
MultiFieldPanel(
[
DocumentChooserPanel("virtual_visit"),
],
heading=_("Virtual Visit"),
classname="collapsible collapsed",
),
Экземпляр хранилища сверху CustomGoogleCloudStorage является тем, который я объявил следующим образом:
@deconstructible
class CustomGoogleCloudStorage(GoogleCloudStorage):
def get_default_settings(self):
default_settings = super().get_default_settings()
default_settings['bucket_name'] = settings.GS_VIRTUAL_TOUR_BUCKET_NAME
default_settings['project_id'] = settings.GS_VIRTUAL_PROJECT_ID
return default_settings
Каждый раз, когда я пытаюсь загрузить документы таким образом, я получаю HTTP 403, что правильно, потому что учетной записи службы, которую я использую, не разрешено вносить изменения в ведро по умолчанию. Скорее, я хочу, чтобы файлы были загружены во второе ведро, где моей учетной записи службы разрешено создавать объекты экземпляра ведра, но я просто не могу указать на это другое ведро. Всякий раз, когда я пытаюсь вывести пользовательский экземпляр CustomGoogleCloudStorage в виде диктанта, я получаю правильный идентификатор проекта, имя ведра и файл учетных данных