gpt4 book ai didi

django - 如何使用 django.core.files.storage.get_available_name?

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

我正在存储文件并需要一个唯一的文件名。我找到了 a suggestion to use django.core.files.storage.get_available_name但我完全错过了一些东西。我试过这个:

class MyModel(models.Model):
name = models.CharField( max_length=200, null=True )
filecontent = models.FileField( null=True, upload_to=Storage.get_available_name(name) )

并得到错误: TypeError: unbound method get_available_name() must be called with Storage instance as first argument (got CharField instance instead)我将其解释为我试图在类上运行该方法,但我需要一个存储实例来运行它。存在一个叫做 DefaultStorage 的东西,它应该是 something that "provides lazy access to the current default storage system"但那个没有 get_available_name方法但只是方法 _setup也不能在类里面调用。那么我应该如何让一个实例在这里工作呢?

最佳答案

upload_to参数是您要将文件上传到的目录路径。 storage 的参数被命名为 storage
因此,如果您想更改默认的 Django 存储实现,您应该做的是使用例如

    filecontent = models.FileField(null=True, upload_to='path/to/dir', storage=FileSystemStorage())

如果您需要实现自己的方式来处理文件名,您只需创建继承自 Storage 的类。并覆盖它的 get_available_name方法。例如:
    class MyOwnStorage(FileSystemStorage):
def get_available_name(self, name):
if self.exists(name):
#return something
else:
#return something_else

然后按如下方式使用它:
    filecontent = models.FileField(null=True, upload_to='path/to/dir', storage=MyOwnStorage())

关于django - 如何使用 django.core.files.storage.get_available_name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112040/

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