我在模型中添加了一个新字段来跟踪用户的各个对象。
然后我使用 south 生成了一个迁移,它要求我为此迁移提供一个默认值,因为用户字段没有默认值。我输入 1 作为用户的 ID。我使用 sqlite 作为数据库后端进行开发。现在,当我打开一个 sqlite shell 并查看 db 模式时,默认值仍然存在:
CREATE TABLE "base_category" ("user_id" integer NOT NULL DEFAULT 1,
"id" integer PRIMARY KEY,
"name" varchar(80) NOT NULL);
但是在迁移文件中它看起来像这样:
# Adding field 'TimeSlot.user'
db.add_column('base_timeslot', 'user',
self.gf('django.db.models.fields.related.ForeignKey')
(default=1, to=orm['auth.User']),
keep_default=False)
如果我正确理解了南文档,它不应该在那里:
如果
keep_default
为 True,则在该字段上指定的任何默认值都将永久添加到该列的数据库架构中。如果不是,则仅在添加列时使用默认值,然后删除。
在关于 SO 的其他问题中,有人指出,默认值不是在 db 级别上处理,而是在 python 中处理。
最后我的问题:
- 由于我不再需要它,我是否必须为仍在我的数据库中的默认值而烦恼?
- 这可能是 sqlite 的问题,因为我无法找到如何使用 SQL 提示手动删除默认值?