我的Django应用程序的git repo包含几个.tsv文件,这些文件包含用于填充我的应用程序数据库的初始条目。在应用程序安装期间,这些项目将导入到应用程序的SQLite数据库中。 SQLite数据库未存储在应用程序的git repo中。
在正常使用应用程序期间,我计划使用管理面板将更多项目添加到数据库中。但是,我也想将这些条目另存为灯具。我当时认为JSON文件可能是实现此目的的理想选择,因为它是基于文本的,因此可以与git版本控件一起使用。这些文件将成为该应用程序的更多固定装置,并将在初始配置时导入。
如何配置我的应用程序,以便每当我向“管理”面板中添加新条目时,该条目的副本也保存在JSON文件中?
我知道您可以使用manage.py dumpdata
命令将整个数据库转储为JSON,但是我不希望 entire 数据库,我只希望对特定数据库的新条目使用JSON表格/模型。
我当时想我可以尝试修改模型上的save
方法,以尝试将该项目的JSON表示形式写入文件,但是我不确定这是否理想。
有更好的方法吗?
答案 0 :(得分:1)
不建议覆盖save
方法以解决可能出错或花费更多时间的事情。当更改简单而重要时,通常会覆盖save
。
您可以使用信号,但是在您的情况下,这是太多的工作。相反,您可以编写一个函数来为您执行此操作,但是在将数据保存到数据库后仍然不能完全做到这一点。您可以立即执行此操作,但这是一个繁琐的过程,除非它对于文件的更新如此重要。
我建议使用celery之类的东西在后台运行与所有django函数分开的函数。例如,您可以在每次数据更新或每小时更新一次,并编辑备份文件。您甚至可以创建一个表来监视更新过程。
哪种解决方案最好,取决于您以及数据的重要性。而且请记住,编辑文件也可能是一个繁重的过程,因此无论如何创建备份都是一个更好的主意。