2010-05-04 71 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