2009-07-22 31 views
1

最近我一直在努力学习在Django Web开发,我很高兴的......Django为什么不“真的”支持自动表更新?

但是,有一两件事是真的很烦 - 特别是当你背后的Django“简于形”理念的想法。

这就是说,更新django中的表格与我刚刚经历的真正远非简单。

例如,就像我的真实情况一样,我跳过在开始时为条目标题添加了一个slug字段。但过了一段时间,我想在表格中添加一个slug列,就像每个人一样 - django中的新手可能会期望,我试过python manage.py syncdb命令。当然,它不工作...经过一番搜索后,我发现“我需要在dbshel​​l命令行中手动添加一个新列”(我使用的数据库是mysql)。

我不知道为什么,但我认为这是在我看到了如何创建简单的在Django一个网站,我从来没有想到一个非常有趣的事情。难道你们都这么认为?或者如果您有任何其他解决方案或任何其他解决方案,请分享一下吗?

在此先感谢...

PS。我不介意与外壳分贝相处,但我想知道的只是为什么它是这样的Django中...

回答

0

他们说得那么,你可以快速轻松地创建具有最小数据库努力。不幸的是,他们并没有让它更容易更新表格,你必须手动执行ALTER TABLE。我认为他们可能正在努力解决这个Django 1.1,但我不完全确定。

3

我用South,以帮助制止这样的问题(虽然它似乎有重新命名字段的问题)。

我觉得不同的数据库后端的是Django支持,并根据these发行说明有在Django 1.1RC

6

数据库迁移没有变化是Django项目目标,这种行为可能是由于,但它是一个足够困难的话题,它并没有在前几个版本中出现。为填补这一空白,出现了一些迁移项目,每个项目都以不同的方式解决了难题。与其试图创建额外的迁移解决方案,或者在任何成熟之前祝福具有“官方”身份的人,或者至少成为单一首选解决方案,django团队决定让这些解决方案演变并从作物中挑选一个在稍后的日期与django一起发货。

至于那些第三方迁移工具的详细信息,看看答案this question.

1

以上几个答案都好信息。但是,根据这个问题,听起来好像提问者可能没有在manage.py中使用reset命令。在开发过程中,当您构建模型和数据时,您可能没有需要持续的数据。种子数据可以存储为initial_data(http://docs.djangoproject.com/en/dev/howto/initial-data/),并且可以在重置和同步数据库时自动或手动添加。

在开发过程中保持各套可以加载数据和自由使用复位命令在manage.py的关键是不断发展的模式工作。但是,一旦您投入生产,迁移工具(或手动数据库调整)就变得至关重要。

1

South实际上处理Django迁移相当好。有很好的文档很容易在website上找到。

相关问题