2011-10-05 55 views
12

我試圖從clinicaltrials.gov將大約30k xml文件加載到mySQL數據庫中,並且我處理多個位置,關鍵字等的方式在使用ManyToManyFields的單獨模型中。Django Fixtures如何處理ManyToManyFields?

我想出的最好方法是使用夾具讀取數據。所以我的問題是,如何處理數據是指向另一個模型的指針的字段?

可惜我不知道有足夠的瞭解多對多/ ForeignKeys是如何工作的,要能夠回答...

感謝您的幫助,下面的示例代碼:_ _代表多對多領域

{ 
    "pk": trial_id, 
    "model": trials.trial, 
    "fields": { 
      "trial_id": trial_id, 
      "brief_title": brief_title, 
      "official_title": official_title, 
      "brief_summary": brief_summary, 
      "detailed_Description": detailed_description, 
      "overall_status": overall_status, 
      "phase": phase, 
      "enrollment": enrollment, 
      "study_type": study_type, 
      "condition": _______________, 
      "elligibility": elligibility, 
      "Criteria": ______________, 
      "overall_contact": _______________, 
      "location": ___________, 
      "lastchanged_date": lastchanged_date, 
      "firstreceived_date": firstreceived_date, 
      "keyword": __________, 
      "condition_mesh": condition_mesh, 
    } 

}

+0

我不記得答案,但如果你運行你的開發服務器,創建使用admin樣本數據,然後轉儲數據庫中使用「manage.py dumpdata」命令一個JSON文件,您將能夠使用文件爲例來創建你的燈具。當我需要找出如何爲關係領域創建燈具時,我就是這麼做的。 :) – akonsu

回答

16

外鍵是一個簡單的,你鏈接到該對象的PK,一個manytomanyfield採用PK的名單。所以

[ 
    { 
     "pk":1, 
     "model":farm.fruit, 
     "fields":{ 
      "name" : "Apple", 
      "color" : "Green", 
     } 
    }, 
    { 
     "pk":2, 
     "model":farm.fruit, 
     "fields":{ 
      "name" : "Orange", 
      "color" : "Orange", 
     } 
    }, 
    { 
     "pk":3, 
     "model":person.farmer, 
     "fields":{ 
      "name":"Bill", 
      "favorite":1, 
      "likes":[1,2], 
     } 
    } 
] 

您將需要寫一個轉換腳本來完成此操作。固定裝置可能非常脆弱;這是很難,你花了很多之前的時間轉換30K的記錄,以獲得工作,所以實驗的一個子集(才發現他們可能不會進口)

+0

感謝。由於燈具的flimsiness,你會推薦XML數據導入數據庫的另一種方式? – CMaury

+0

使用Python腳本,讀取XML,並創建一個審判對象,那麼就使用trial.save()。 – blaze