我有基本上这种模式(其他领域排除在外):与lambda作为默认值和独特的Django字段=真
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字段的默认值是预先计算好的并用于每个新条目,因此它不是唯一的ea ch对象。我怎样才能得到它分别计算每个对象的值?
能否请您分享迁移? –
正如你所看到的,默认值在你的迁移中被硬编码。 –