2017-02-17 5 views
-1

djangoモデルを作成し、JSONファイルを取得して学生用のすべてのデータをフィードし、クラスの表示webappを作成する必要があります。 JSONファイルには、私のように私のデータモデルを持っているdjangoモデル化してテーブルとしてJSON入力をロード

{ 
"students": [ 
     { 
      "first": "John", 
      "last": "Smith", 
      "email": "[email protected]", 
      "studentClasses": [ 
        { 
         "id": 1, 
         "grade": 4 
        }, 
        { 
         "id": 2, 
         "grade": 3 
        }, 
      ]}, 
       {...#truncated data, this follows with more students 

"classes": { 
     "1": "Math 101", 
     "2": "English 101", 
     "3": "Science 101", 
     #total 8 classes declared, truncated 
     } 

.....

class Student(models.Model): 
    first = models.CharField(max_length=200) 
    last = models.CharField(max_length=200) 
    email = models.EmailField() 

class Classes(models.Model): 
    student = models.ForeignKey(Student) 
    class_name = models.CharField(max_length=50) 

...、それは(データポイントのカップルに切り捨て)このように見えるか、私のモデリングを推進しようとしています私の質問は次のとおりです...

(1)studentClasses:[{id:1、grade:4}]型のJSONファイルからリレーショナル入力を受け取り、データベーステーブルにデータを取り込む方法をどのようにモデル化できますか?私はシリアライザをなぜ宣言しなければならないのでしょうか?

(2)IDはクラステーブルでIDではなく、学生テーブルではIDと混同することを明示的に宣言する必要がありますか?

(3) "python manage.py load data myjsonfile.json"でテーブルを読み込めるようです(これで十分でしょう)?

(4)「studentClasses」と呼ばれる第3のモデルが必要ですか?そのクラスのどのクラスとグレードを履修した学生を追跡しますか? ご協力いただきありがとうございます。データベースを更新し、私としては、(別のファイルに)短い関数を記述した方が良いようです

答えて

0

import json 
from app.models import Student, Classes 

data = json.loads('fixtures.json') 
for student in data['students']: 
    # parse student; save classes and student objects 

print('done') 

(2)私は1つに」、あなたは関係「多くの多くを」使用すべきではないと思います多くの場合

+0

私の質問(3)に対する回答として別の機能を作成することをお勧めしますか?それはおそらく動作する可能性があります。今私は何故多くの関係になるのか理解していないのですか?私は学生の主キーとそれにかかるクラスとそのクラスのグレードを持つ "studentClasses"という3番目のモデルが必要でしょうか?質問(4)を追加して私の質問を更新しました。 – LuckyStarr

0

student_classesフィールドをStudentに追加する必要があります.jsonpickleを使用してシリアル化できます。そのフィールドを持つことで、私はあなたが外来キーを必要としないと思っています...あなたは "テーブルを読み込んでいる"ということを話しています - それは混乱しているようです。 djangoのモデルは、モデリングコードが示しているようにクラスで構成されているため、モデル(およびその中のデータ)を操作するには、「models import Student、Classes」などのクラスをインポートします。

+0

student_classesがどのように役立つのだろうか?このフィールドにはクラスIDとグレードが必要です。これを処理するには3番目のモデルが必要なのでしょうか?私は質問(4)を追加しました。それは意味がありますか?テーブルの読み込みについては、すでにJSONファイルに多数のデータがあり、それらをデータベースに取り込むための最良の方法を知りたいと思っています。 – LuckyStarr

+0

私はあなたがこれにアプローチする最善の方法は、問題を構想することです:あなたはクラスに基づいて生徒データを調べることができる必要があります。これを実現するには、両方を接続するstudent_classesフィールドを追加します。データを挿入するには、データを含むファイルを開き、クラスをインポートし、class.save()メソッドを使用して各フィールドにデータを保存するスクリプトを作成しますか?これはそれをより明確にするか? – postoronnim

+0

私はstudent_classesの3番目のモデルを作成し、これらのモデルにデータを読み込むスクリプトを作成します。 – LuckyStarr

関連する問題