【发布时间】:2015-10-20 14:12:05
【问题描述】:
我基本上得到了这个模型(其他字段省略了):
class GiftBase(models.Model):
"""
A base class for describing gift type items.
"""
uuid = models.CharField(max_length=32, default=lambda: uuid.uuid4().hex, unique=True)
当我这样做时
./manage.py schemamigration facebookapp --auto
./manage.py migrate facebookapp
我得到这个输出
Running migrations for facebookapp:
- Migrating forwards to 0053_auto__add_field_giftbase_uuid__add_field_purchase_uuid.
> facebookapp:0053_auto__add_field_giftbase_uuid__add_field_purchase_uuid
FATAL ERROR - The following SQL query failed: ALTER TABLE "facebookapp_giftbase" ADD COLUMN "uuid" varchar(32) NOT NULL UNIQUE DEFAULT '8de722a747974db3aab4c1fdaa618f16';
The error was: could not create unique index "facebookapp_giftbase_uuid_key"
DETAIL: Key (uuid)=(8de722a747974db3aab4c1fdaa618f16) is duplicated.
由此,我意识到 uuid 字段的默认值是预先计算的并用于每个新条目,因此它不是每个对象唯一的。我怎样才能让它分别计算每个对象的值?
【问题讨论】:
-
你能分享一下迁移吗?
-
如您所见,默认值在您的迁移中是硬编码的。
标签: python django python-2.7 django-1.6