0

我的 Django 应用程序有一个开发站点和一个实时站点。许多前端副本和其他对象详细信息存储在数据库中。相反,很多客户端数据也存储在数据库中。让开发站点准备好然后将新副本和对象复制到实时服务器的最有效方法是什么?

我想最简单的方法是将可更改的开发站点数据与实时站点保持同步,然后更新开发站点,然后将数据转储到实时站点。但是,如果/当有人在这种情况发生时更新实时站点会发生什么?他们的更新将被覆盖。

是否有 Django 应用程序允许我“检查”管理列表视图中的条目,按“复制”然后以某种方式将它们粘贴到新站点中?

或者人们在这种常见场景中使用的其他模式是什么?

这有点像使用 GIT——拥有一个主分支,然后为每个实时站点迭代创建一个分支,然后在实时站点上创建修补程序,同时仍在开发站点上工作——修补程序可以合并到开发站点中。我们如何合并数据?

4

2 回答 2

0

是否有 Django 应用程序允许我“检查”管理列表视图中的条目,按“复制”然后以某种方式将它们粘贴到新站点中?

不是我知道的。但我认为您可以通过合理的努力编写这样的应用程序。我建议如下:

  • 对更改列表视图使用管理员操作。这样您就可以将多个对象从您的开发系统发布传输到您的实时系统。有关详细信息,请参阅文档
  • 将另一个按钮添加到单个对象的更改视图。也许“发布到实时站点”。
  • 向更改视图添加另一个按钮,该按钮可在一个步骤中保存和发布,例如“保存并发布到实时站点”。

要将按钮添加到更改表单,我将覆盖相应的模板:

http://code.djangoproject.com/svn/django/trunk/django/contrib/admin/templates/admin/change_form.html

像这样覆盖块“submit_buttons_bottom”

{% block submit_buttons_bottom %}
  {{ block.super }}
  <!-- your buttons here -->
{% endblock %}

最好只编写一个函数来完成将对象从开发系统传输到实时系统的工作。在所有三个用例中都使用此功能。

但是有一个问题!

将一个对象从一个 Django 实例复制到另一个对象可能相当困难。尤其如此,如果这些对象与其他对象有关系,那么这些对象又可能与另一个对象有关系。保持参照完整性应该是一场噩梦。也许有人对此有一个很好的解决方案。

于 2012-08-21T13:32:47.920 回答
0

我不确定我是否正确理解,如果我错了,请告诉我:所以基本上,您想在生产和开发实例中对(相同的)数据进行更改?

恕我直言,由于许多原因,它通常不是一个好的解决方案,其中一个是这种脆弱的需要合并你提到的。对我来说,解决这个问题的最佳方法实际上是使两个环境尽可能分离(数据方面)。

恕我直言,不惜一切代价避免的部分是最终的开发->生产合并。我可以更好地理解需要向另一个方向转移(从产品到开发)。我可以在这里看到两种常见的情况:

  • 您想要在 dev.xml 中使用相同的数据。尝试重现与数据相关的错误。在这种情况下,为什么不简单地转储生产数据库并将其加载到开发中。机器 ?恕我直言,这个开发者。数据库应该一直被认为是“可擦除的”。
  • 您在生产站点上有一些“初始”数据,这些数据足够通用,在开发中也需要(类似于“性别”表中的男性/女性条目)。在这种情况下,您可以想象使用Fixtures

在考虑您的数据流和环境时,您可能还应该看看South,数据迁移是一个非常有用的工具。

希望这可以帮助 !

于 2012-08-21T11:33:52.890 回答