Django Fixtures 如何处理 ManyToManyFields?

Posted

技术标签:

【中文标题】Django Fixtures 如何处理 ManyToManyFields?【英文标题】:How do Django Fixtures handle ManyToManyFields? 【发布时间】:2011-12-01 02:39:02 【问题描述】:

我正在尝试将大约 30k xml 文件从临床试验.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,
    

【问题讨论】:

我不记得答案了,但是如果您运行您的开发服务器,使用 admin 创建示例数据,然后使用“manage.py dumpdata”命令将数据库转储到 json 文件中,您将能够使用该文件作为示例创建您的固定装置。当我需要了解如何为关系字段创建固定装置时,我就是这样做的。 :) 【参考方案1】:

外键很简单,就是你要链接的对象的 pk,manytomanyfield 使用 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],
         
    
]

您可能需要编写一个转换脚本来完成这项工作。固定装置可能非常脆弱;很难得到工作,所以在花费大量时间转换 30k 记录之前先尝试一个子集(只是发现它们可能无法导入)

【讨论】:

谢谢。鉴于固定装置的脆弱性,您会推荐另一种将 XML 数据导入数据库的方法吗? 使用 Python 脚本读取 XML,并创建 Trial 对象,然后使用 trial.save()。

以上是关于Django Fixtures 如何处理 ManyToManyFields?的主要内容,如果未能解决你的问题,请参考以下文章

Jooq 一次将 one2one 和 one2many 关系数据插入到 2 个表中。如何处理问题和回滚

如何处理 Django 中未应用的迁移?

如何处理 Django 中不共享同一个域的前端

如何处理 Rails 中的嵌套表单?

如何处理 django 查询集中的变量字符串?

如何处理 Django URL 中的 & 符号?