Как Django Fixtures обрабатывают ManyToManyFields? - PullRequest
15 голосов
/ 05 октября 2011

Я пытаюсь загрузить около 30 тыс. XML-файлов из Clinicaltrials.gov в базу данных MySQL, и способ обработки нескольких местоположений, ключевых слов и т. Д. В отдельной модели с использованием ManyToManyFields.

Лучший способ, который я понял, - это прочитать данные с помощью прибора. Итак, мой вопрос, как мне обрабатывать поля, где данные являются указателем на другую модель?

К сожалению, я недостаточно знаю, как работает ManyToMany / ForeignKeys, чтобы иметь возможность ответить ...

Спасибо за помощь, пример кода ниже: _ _ представляет поля ManyToMany

{
    "pk": trial_id,
    "model": trials.trial,
    "fields": {
            "trial_id": trial_id,
            "brief_title": brief_title,
            "official_title": official_title,
            "brief_summary": brief_summary,
            "detailed_Description": detailed_description,
            "overall_status": overall_status,
            "phase": phase,
            "enrollment": enrollment,
            "study_type": study_type,
            "condition": _______________,
            "elligibility": elligibility,
            "Criteria": ______________,
            "overall_contact": _______________,
            "location": ___________,
            "lastchanged_date": lastchanged_date,
            "firstreceived_date": firstreceived_date,
            "keyword": __________,
            "condition_mesh": condition_mesh,
    }

}

1 Ответ

21 голосов
/ 05 октября 2011

Внешний ключ - это просто pk объекта, к которому вы привязываете, поле многих данных использует список pk.поэтому

[
    {
        "pk":1,
        "model":farm.fruit,
        "fields":{
            "name" : "Apple",
            "color" : "Green",
        }
    },
    {
        "pk":2,
        "model":farm.fruit,
        "fields":{
            "name" : "Orange",
            "color" : "Orange",
        }
    },
    {
         "pk":3,
         "model":person.farmer,
         "fields":{
             "name":"Bill",
             "favorite":1,
             "likes":[1,2],
         }
    }
]

Возможно, вам понадобится написать скрипт преобразования, чтобы это сделать.Светильники могут быть очень хрупкими;Трудно получить работу, поэтому поэкспериментируйте с подмножеством, прежде чем тратить много времени на преобразование записей 30 КБ (только чтобы выяснить, что они могут не импортироваться)

...