2011-10-05 12 views
12

私はclin​​icaltrials.govからmySQLデータベースにおよそ30kのxmlファイルをロードしようとしています.MyToToManyFieldsを使用して複数の場所やキーワードなどを処理する方法は別のモデルになります。Django FixturesはManyToManyFieldsをどのように扱いますか?

私が把握した最良の方法は、フィクスチャを使用してデータを読み取ることです。だから私の質問は、データが別のモデルへのポインタであるフィールドをどのように処理するのですか?

私は残念ながら答えることができて、多対多/のForeignKeyがどのように機能するかについて十分に知らない

...助けを

おかげで、以下のサンプルコード:_ _多対多分野に表す

{ 
    "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

私は答えは覚えていませんが、 "manage.py dumpdata"コマンドを使用してjsonファイルにデータベースをダンプすると、そのファイルを例として作成することができます。それは私が関係フィールドのための器具を作る方法を見つける必要があるときにしたことです。 :) – akonsu

答えて

16

外部キーのManyToManyFieldがPK年代のリストを使用して、あなたがにリンクされているオブジェクトのPK簡単です。 so

[ 
    { 
     "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

ありがとうございます。フィクスチャの厄介さを考えると、XMLデータをDBにインポートする別の方法をお勧めしますか? – CMaury

+0

XMLを読み込んでPythonスクリプトを使用して、Trialオブジェクトを作成し、次にtrial.save()を使用します。 – blaze

関連する問題