我正在尝试创建一些用于在 Django 中运行测试的装置。现在,我只是从我的开发数据库中转储适当的模型,然后通过测试加载它们。这是我用来转储灯具的命令:
python manage.py dumpdata accounts.Profile auth.User -n auth.User --indent 4 -e contenttypes > path/to/fixture.json
在这个问题和这个问题之后,我添加了使用自然键和排除内容类型的标志。这无济于事——我收到以下错误消息:
IntegrityError: Could not load accounts.Profile(pk=1): duplicate key value violates unique constraint "accounts_profile_user_id_key"
DETAIL: Key (user_id)=(1) already exists
我已经手动检查了灯具,并且该用户 ID 只有一个条目。Profile 模型非常标准,带有一些带有个人信息的额外字段。它通过以下方式链接到模型中的用户:
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
以完整性的名义,以下是固定装置的外观:
{
"pk": 1,
"model": "auth.user",
"fields": {
"username": "unique_username",
"first_name": "",
"last_name": "",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"last_login": "2013-03-31T23:19:44.391",
"groups": [],
"user_permissions": [],
"password": "secret",
"email": "email",
"date_joined": "2013-03-13T21:30:39.225"
}
},
{
"pk": 1,
"model": "accounts.profile",
"fields": {
"status": "active",
"first_name": "John",
"last_name": "Smith",
"middle_name": null,
"headline": "Something very cool",
"user": [
"unique_username"
],
"location": null
}
}
有任何想法吗?是因为我用来链接用户和个人资料的钩子吗?
我在 Mac OS X (10.7.5) 上使用 Python 2.6 的 Enthought 发行版运行 Django 1.4。