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?的主要内容,如果未能解决你的问题,请参考以下文章