Django文件上传在文件上运行一个函数并存储在数据库中?

时间:2017-02-08 15:03:33

标签: python django

所以我将文件上传到django的数据库中。为此,我使用django-database-files。我想要做的是在上传的文件上运行一个函数,所以我不必每次都读取文件,所以我可以查询一些信息。我想要一个只包含存储文件的表(因此不必经常查询)和另一个通过读取和解析文件填充的表。以下是我如何设置模型的基本概述:

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模型?

1 个答案:

答案 0 :(得分: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()