2010-05-04 34 views
0

我可能是以錯誤的方式加載數據。Django:加載後數據已損壞? (可能程序員錯誤)

摘錄的

data.json

{ 
    "pk": "1", 
    "model": "myapp.Course", 
    "fields": 
    { 
     "name": "Introduction to Web Design", 
     "requiredFor": [9], 
     "offeringSchool": 1, 
     "pre_reqs": [], 
     "offeredIn": [1, 5, 9] 
    } 
}, 

我運行python manage.py loaddata -v2 data

安裝從1個 夾具(一個或多個)36(多個)對象

然後,我使用Django shell檢查上述對象:

>>> info = Course.objects.filter(id=1) 
>>> info.get().pre_reqs.all() 
[<Course: Intermediate Web Programming>] # WRONG! There should be no pre-reqs 
>>> from django.core import serializers 
>>> serializers.serialize("json", info) 
'[{"pk": 1, "model": "Apollo.course", "fields": {"pre_reqs": [11], "offeredIn": [1, 5, 9], "offeringSchool": 1, "name": "Introduction to Web Design", "requiredFor": [9]}}]' 

模型的序列化輸出與給予loaddata的輸入不同。輸出具有非空的pre_req列表,而輸入的pre_reqs字段爲空。我究竟做錯了什麼?

回答

2

我認爲您的多對多表pre_reqs中已經有內容(FK = 1)(加載JSON數據之前)。

似乎加載程序不會刪除多對多表中已有的元組。

看看django.core.serializer.base.DeserializedObject課程。 DeserializedObject.save方法只添加新的關係。

+0

你是否用myapp.Course數據刪除了所有其他jsons?在PK = 1的燈具路徑中是否有antoher文件? – maersu 2010-05-04 13:47:20