gpt4 book ai didi

django - 可以将 Wagtail 文档上传到/documents/的子​​文件夹

转载 作者:行者123 更新时间:2023-12-04 16:10:42 25 4
gpt4 key购买 nike

我正在通过 Amazon S3 提供我的 Django-Wagtail 媒体文件,现在我需要定义一个自定义文档类来创建“受限”文档(只有登录后才能访问).这些文件将有一个特殊的访问权限,它会对我的 S3 存储桶说“嘿!只要从这个“foo_url”而不是从其他任何地方请求它们,就传送这些文件”,因为它们将显示给仅限登录用户。我想到这个是为了防止受限制的 url 传播

这就是为什么我试图将此 Wagtail 文档类定义为存储在 /documents/子文件夹 中,并告诉亚马逊如何处理该子文件夹。

dummy_code_that_doesnt_work:

class RestrictedDocument(Document):
def get_upload_to(self, filename):
folder_name = 'restricted'
filename = self.file.field.storage.get_valid_name(filename)
return os.path.join(folder_name, filename)

"""
Snippet containing restricted documents
"""
@register_snippet
@python_2_unicode_compatible # provide equivalent __unicode__ and __str__ methods on Python 2
class FooSnipet(models.Model):

rectricted_document_1 = models.ForeignKey(
'RestrictedDocument',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
rectricted_document_2 = models.ForeignKey(
'RestrictedDocument',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
....
and many more
....

也许我把这一切复杂化了,还有另一种方法。任何建议都将非常受欢迎!非常感谢你:)

最佳答案

Document 模型不支持像图像那样的 get_upload_to 方法。但是,从 Django 1.10 开始,可以覆盖 AbstractDocumentfile 字段:

from wagtail.wagtaildocs.models import AbstractDocument

class RestrictedDocument(AbstractDocument):
file = models.FileField(upload_to='restricted', verbose_name=_('file'))

不过,我不确定这会有多大帮助 - Wagtail 管理中处理文档上传的 View 无法知道他们应该通过 RestrictedDocument 模型保存文档,而是比默认的文档类。

在 Wagtail 中实现对文档的查看限制目前正在进行中(https://github.com/wagtail/wagtail/pull/3245https://github.com/wagtail/wagtail/issues/1420)。

关于django - 可以将 Wagtail 文档上传到/documents/的子​​文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42087838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com