Django:加载后数据损坏了吗? (可能是程序员错误)

时间:2010-05-04 13:21:53

标签: django serialization django-models

我可能以错误的方式加载数据。

摘录 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个对象   固定装置(S)

然后,我使用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字段为空。我做错了什么?

1 个答案:

答案 0 :(得分:2)

我认为你的多对多表pre_reqs中存在内容(FK = 1)(在加载JSON数据之前)。

加载器似乎不会删除多对多表中已存在的元组。

查看django.core.serializer.base.DeserializedObject课程。 DeserializedObject.save方法只添加新的关系。