Pat*_*ick 6 django django-models django-validation
在我的模型中,我想使用验证器来分析文件的内容,我想不通的是如何访问文件的内容来解析它,因为文件尚未保存(这很好) 当验证器正在运行时。
我不明白如何将value
传递给验证器的数据获取到文件中(我假设我应该使用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()])
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
看看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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1069 次 |
最近记录: |