gpt4 book ai didi

django - 如何对 FileField 内容使用验证器

转载 作者:行者123 更新时间:2023-12-02 05:51:21 30 4
gpt4 key购买 nike

在我的模型中,我想使用验证器来分析文件的内容,我不知道如何访问文件的内容来解析它,因为文件尚未保存(当验证器运行时,这很好。

我不明白如何将传递给验证器的中的数据获取到文件中(我假设我应该使用tempfile),以便我可以打开并评估数据。

这是一个简化的示例,在我的真实代码中,我想打开文件并使用 csv 对其进行评估。

在 Models.py 中

class ValidateFile(object):
....
def __call__(self, value):
# value is the fieldfile object but its not saved
# I believe I need to do something like:
temp_file = tempfile.TemporaryFile()
temp_file.write(value.read())
# Check the data in temp_file
....

class MyItems(models.Model):
data = models.FileField(upload_to=get_upload_path,
validators=[FileExtensionValidator(allowed_extensions=['cv']),
ValidateFile()])

感谢您的帮助!

最佳答案

看看这是如何在 ImageField 中完成的实现:

所以你的 ValidateFile 类可能是这样的:

from io import BytesIO

class ValidateFile(object):

def __call__(self, value):
if value is None:
#do something when None
return None

if hasattr(value, 'temporary_file_path'):
file = value.temporary_file_path()
else:
if hasattr(value, 'read'):
file = BytesIO(value.read())
else:
file = BytesIO(value['content'])

#Now validate your file

关于django - 如何对 FileField 内容使用验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770185/

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