2013-04-30 18 views
0

我有一個JSON文件sample.json衝突:如何加載的Django 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

loaddata管理命令不適用於將數據添加到現有數據庫 - 它旨在用於加載用於測試或引導目的的裝置(see the docs) - 因此不能很好地與現有數據配合使用。

如果你想從JSON加載數據來更新或增加你的用戶列表,你會更好的writing a custom management command實現你想要的語義。

您可以看到a similar question的解答,以獲取有關如何繼續操作的更多想法。