使用数据模型存储.html报告

时间:2018-10-18 15:05:25

标签: django

我是Django的新手,我正在寻找解决以下问题的最佳方法。

我有一个正在生成两个报告的应用程序。一个是JSON Blob,因此我将其与使用JSONField的数据模型一起存储在psql中。 第二个报告是一个.html文件。

.html文件每天将生成多次,因此想到的第一件事是将其存储在数据库中。 我还需要能够拉出报告,以便可以在UI中将其显示给用户。

我使用TextField创建了一个测试数据模型:

class TestResultsHTML(models.Model):
    name = models.CharField(max_length=200)
    report = models.TextField()

它使它进入Db没问题,但是当我尝试检索它时,我似乎无法获得实际的报告:

In [3]: html_results =  TestResultsHTML.objects.get(id=4)

In [4]: html_results.name
Out[4]: 'b0f5c336-867a-44a3-a5ef-6297bf6042cf'

In [5]: html_results.report
Out[5]: "<_io.TextIOWrapper name='report.html' mode='r' encoding='UTF-8'>"

我期望.report将返回文件的实际内容。文件本身有1800多行。

这是一种好方法还是不是TextField的预期用途?

1 个答案:

答案 0 :(得分:0)

TextField不存储文件,Django为此提供了一个FileField(请参见here)。这会将文件保存到某个位置/文件夹,并且保存在数据库中的对象实际上存储了该位置,您可以然后再访问。类似这样的东西:

class TestResultsHTML(models.Model):
    name = models.CharField(max_length=200)
    file_loc = models.FileField(upload_to=upload_location)

然后在以后用以下方式打开文件:

with open(html_results.file_loc, 'w'):