2017-05-03 7 views
1

내 모델에서 유효성 검사기를 사용하여 파일의 내용을 분석하고 싶습니다. 알아낼 수없는 것은 파일의 내용에 액세스하여 파일을 분석하는 방법입니다. 유효성 검사기가 실행 중일 때 파일이 아직 저장되지 않았습니다.FileField 콘텐츠에서 유효성 검사기를 사용하는 방법

유효성 검사기로 전달 된 '값'의 데이터를 파일로 가져 오는 방법을 이해하지 못했습니다. 따라서이 파일을 열고 데이터를 평가할 수 있습니다.

다음은 간단한 예제입니다. 실제 코드에서 파일을 열고 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()]) 
에서

감사합니다!

답변

1

이이 ImageField 구현에서 수행하는 방법을 살펴 보자 :

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 
:

그래서 ValidateFile 클래스는이 같은 수 있습니다

관련 문제