Django - 在写入数据库之前在哪里存储临时/预览模型?

时间:2011-06-27 06:48:18

标签: database django models

我们有一个CSV文件,我们将其导入Django应用程序,然后创建适当的模型和关系。

在第一页,我们有一个文件上传表单,供用户选择文件。

然后我们解析文件,并返回第二页,显示它们将创建的内容,任何验证错误等。

然后,用户可以决定是否继续(或者可能更正屏幕上的任何区域)。

在实际访问数据库之前,存储临时临时模型的最佳方法是什么?

CSV文件相当大,可能大约200 Kb,并创建数百个模型。

我应该将它存储在某个地方的数据库中,并将这些模型标记为“临时”吗?对于确认来说似乎有点沉重,我不确定它是否适合使用数据库。或者有什么方法可以将它存储在Django会话中?或者其他任何方式吗?

之前我在django-users上提到过这个问题,他们建议使用单独的数据库,或者将其存储在MongoDB中。我不太确定以这种方式将Django模型持久化到MongoDB的最佳方法。

他们还提到我可能需要使用像ZeroMQ或django-celery这样的东西来异步处理导入过程,以防万一Web服务器在它期间超时。

无论如何,我想也会画SO社区,因为这里还有很多聪明的Django人潜伏在这里=。

干杯, 维克多

1 个答案:

答案 0 :(得分:1)

如果这个csv导入过程是常见的和永久的(即许多用户使用并且不限于短时间内),我宁愿将逻辑合并到模型中:我会修改模型以使其具有指示实例处于活动状态或待处理状态的标志(您也可以添加删除)。这可以由多个经理补充。可以修改默认管理器以仅过滤活动对象,而第二个管理器可以仅获取待定对象。可以编写一份工作来处理已经等待很长时间的对象。

否则(如果这是临时情况),您可以选择任何适合的媒体来保留待处理的对象。