2017-02-08 8 views
0

私はdjangoのデータベースにファイルをアップロードしています。これを行うには、django-database-filesを使用しています。私がやりたがっているのは、アップロードされたファイルに対して関数を実行することで、毎回ファイルを読み込む必要がなくなるため、いくつかの情報を照会することができます。私は、格納されたファイルだけで1つのテーブルを探したいので(これは頻繁に問い合わせる必要はありません)、ファイルを読み込んで解析することによって読み込まれる別のテーブルが必要になります。ここで私は私のモデルを設定しているかの基本的な概要です:Djangoファイルのアップロードファイルに関数を実行し、データベースに格納しますか?

class Report(models.Model): 
    #Machine Run File 
    report = models.FileField(upload_to='not required') 

class Report_Info(models.Model): 
    start_time = models.DateTimeField() 
    ... I have more fields that are calculated from the file 
    file = ForeignKey(Report) 

私は、ファイルをアップロードしてもアップロードされたファイルに基づいてReport_Infoモデルを移入する方法を疑問に思って?

答えて

0

最も簡単にはReport.saveをオーバーライドします

class Report(models.Model): 
    report = ... 

    def save(self, **kwargs): 
     super(Report, self).save(**kwargs) 
     try: 
      # 'Report_Info' is just the ugliest name possible 
      report_info = ReportInfo.objects.get(file=self) 
     except ReportInfo.DoesNotExist: 
      report_info = ReportInfo(file=self) 
     # process self.report and fill report_info fields 
     report_info.save() 
関連する問題