2015-11-05 75 views
0

我想使用json文件來填充Django模型的實例。我基本上將JSON中的結構扁平化爲幾個表/類。你如何將json數據映射到Django表?使用json文件填充Django模型sql表

這樣做的最有效方法是什麼?

謝謝。

回答

1

"Providing initial data for models"

它有時有用的預填充硬編碼的數據當你第一次建立一個應用程序的數據庫。您可以通過燈具提供初始數據。

夾具是Django知道如何導入數據庫的一組數據。如果已經有一些數據,那麼最簡單的方法就是使用manage.py dumpdata命令。或者,你可以手工書寫夾具; fixtures可以寫成JSON,XML或YAML(帶有PyYAML安裝)文檔。序列化文檔有關於每種支持的序列化格式的更多詳細信息。

+0

如何將JSON文件中的數據映射到表?這意味着manage.py dumpdata如何將層次化的JSON文件下載到平坦的SQL表中,而不指定它需要映射到的字段。 –

1
$ python manage.py loaddata yourjsonfile.json 

比方說,你要填充標準的Django用戶表2個用戶:約翰·列儂和小野洋子。你的json會像這樣:

[ 
{ 
    "pk": 1, 
    "model": "auth.user", 
    "fields": { 
     "username": "john", 
     "first_name": "John", 
     "last_name": "Lennon", 
     "is_active": true, 
     "is_superuser": true, 
     "is_staff": true, 
     "last_login": "2015-06-03T14:07:31.392Z", 
     "groups": [], 
     "user_permissions": [], 
     "password": "pbaasdf_sha256$12001$9Ser7lc1k1pWQFqk0x3u/T6I3", 
     "email": "[email protected]", 
     "date_joined": "2015-03-10T15:38:34.406Z" 
    } 
}, 
{ 
    "pk": 2, 
    "model": "auth.user", 
    "fields": { 
     "username": "yoko", 
     "first_name": "Yoko", 
     "last_name": "Ono", 
     "is_active": true, 
     "is_superuser": false, 
     "is_staff": false, 
     "last_login": "2015-05-19T13:36:58.444Z", 
     "groups": [], 
     "user_permissions": [], 
     "password": "baasdf_sha256$12cJskLs9Ser7lc1k1pWQFqk0x3u/T6I3", 
     "email": "[email protected]", 
     "date_joined": "2014-05-19T13:36:58.444Z" 
    } 
} 
] 
+0

如何使用現有的JSON文件而無需創建新的? –

+0

如果它沒有命令'python manage.py loaddata'接受的字段,則不能使用它。 您必須指定例如模型的名稱(字段「模型」)。如果你不這樣做,Django永遠不會知道把這些數據放在哪裏。 –