我有一个JSON文件sample.json:
[
{
"pk": null,
"model": "auth.user",
"fields": {
"username": "JoeBob"
}
}
]
我已经拥有一个名称为JoeBob
的auth.User模型。
如果我通过manage.py loaddata sample.json
将它加载到Django应用程序中,我希望它创建记录,如果它不存在,或者不执行任何操作。在这种情况下,它应该什么都不做。
但是,它似乎尝试创建一个重复的记录,返回错误:
IntegrityError: Could not load auth.User(pk=None): duplicate key value violates unique constraint "auth_user_username_key"
DETAIL: Key (username)=(JoeBob) already exists.
如何加载JSON数据,以便只创建相应的自然键尚不存在的记录?据说,Django的auth.User模型does support natural keys。
答案 0 :(得分:1)
loaddata
管理命令不用于将数据添加到现有数据库 - 它旨在用于加载灯具以进行测试或自举(see the docs) - 因此无法播放很好地利用现有数据。
如果要从JSON加载数据以更新或扩充用户列表,那么实现所需语义的writing a custom management command会更好。
您可以查看a similar question的答案,了解有关如何继续的更多提示。