2011-10-05 25 views
12

Estoy tratando de cargar alrededor de 30k archivos XML de clinicaltrials.gov en una base de datos mySQL, y la forma en que manejo varias ubicaciones, palabras clave, etc., están en un modelo separado que usa ManyToManyFields.¿Cómo manejan los accesorios Django ManyToManyFields?

La mejor manera que he descubierto es leer los datos en el uso de un dispositivo. Entonces mi pregunta es, ¿cómo manejo los campos donde los datos son un puntero a otro modelo?

que por desgracia no sé lo suficiente sobre cómo funcionan ManyToMany/ForeignKeys, para ser capaz de responder ...

Gracias por la ayuda, código de ejemplo siguiente: _ _ representar los campos 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, 
    } 

}

+0

No recuerdo la respuesta, pero si ejecuta su servidor de desarrollo, cree muestrear datos usando admin, y luego volcar la base de datos en un archivo json usando el comando "manage.py dumpdata", usted podrá crear sus accesorios usando el archivo como ejemplo. eso es lo que hice cuando necesité descubrir cómo crear accesorios para campos de relación. :) – akonsu

Respuesta

16

una clave externa es simple el pk del objeto que está vinculando a un ManyToManyField utiliza una lista de de pk. entonces

[ 
    { 
     "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], 
     } 
    } 
] 

Probablemente necesite escribir un script de conversión para hacer esto. Los accesorios pueden ser muy endebles; es difícil obtener el trabajo así que experimente con un subconjunto antes de pasar mucho tiempo convirtiendo los registros de 30k (solo para descubrir que podrían no importar)

+0

Gracias. Dada la fragilidad de los dispositivos, ¿recomendaría otra forma de importar datos XML en la base de datos? – CMaury

+0

Utilice una secuencia de comandos de Python que lea el XML y cree un objeto de prueba, luego simplemente use trial.save(). – blaze

Cuestiones relacionadas