我正在使用 South 来管理我的数据库。似乎每次我在创建模型的方式上进行一些细微的更改时,我最终都不得不为迁移做一堆体操。例如,假设我有一个这样的类:
class Entry(models.Model):
title = models.CharField(max_length=80)
author = models.ForeignKey(User)
pubDate = models.DateTimeField()
tags = models.ManyToManyField(Tag)
text = models.TextField()
和另一个Entry
作为 ForeignKey 的类:
class Comment(models.Model):
author = models.ForeignKey(User)
entry = models.ForeignKey(Entry)
pubDate = models.DateTimeField()
text = models.TextField()
这是微不足道的,但是如果我要做一些简单的事情,例如将名称 pubDate 更改为 pub_date in Entry
,为了仅针对此名称更改正确执行模式迁移,我将不得不设置:
default=None, null=True
对于 pubDateEntry
和 中的entry
字段Comment
,否则在尝试运行迁移时会出现以下异常:
The field 'Comment.entry' does not have a default specified, yet is NOT NULL.
那么我将不得不返回并取出默认/空值。有没有一种不那么乏味的方法来做到这一点,还是我只需要在将模型提交到迁移之前真正考虑一下我的模型?在开始阶段,如果您没有任何需要保留的数据,那么仅设置和拆除数据库是否更有意义?如果是这样,最简单的方法是什么?