Джанго: Данные повреждены после загрузки? (возможная ошибка программиста) - PullRequest
0 голосов
/ 04 мая 2010

Возможно, я загружаю данные неправильно.

выдержка из 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:

Установлено 36 объектов из 1 приспособление (ы)

Затем я проверяю вышеуказанный объект с помощью оболочки Django:

>>> 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 Ответ

2 голосов
/ 04 мая 2010

Я думаю, что в вашей таблице «многие ко многим» уже есть pre_reqs (с FK = 1) (до загрузки данных JSON).

Кажется, загрузчик не удалит уже существующие кортежи в таблицах "многие ко многим".

Посмотрите на класс django.core.serializer.base.DeserializedObject. Метод DeserializedObject.save добавляет только новые отношения.

...