Django使用fixture加载初始数据时ForeignKey外键字段如何处理
Django Fixture 外键字段关联配置方案
你只需要在pricing字段的位置填入目标关联模型条目的主键(pk)值即可,你示例中需要关联的src.Pricing条目pk为1,直接赋值1即可。
修改后的完整fixture示例:
[ { "model":"src.Pricing", "pk": 1, "fields": { // Pricing模型对应字段值 } }, { "model":"src.PricingFeature", "pk": 1, "fields": { // 其他PricingFeature模型字段值 "pricing": 1 } } ]
注意事项
- 确保被关联的模型条目在fixture中的排序早于依赖它的条目,你当前示例中
src.Pricing写在src.PricingFeature之前,顺序符合要求,不会出现关联对象不存在的报错。 - 如果ForeignKey字段配置了
null=True,你也可以填入null将该字段留空。 - 如果是多对多(ManyToMany)类型的字段,对应值需要传入关联对象pk组成的列表,例如
"pricing": [1,2]。 - 若项目启用了natural key作为关联标识,需要先在对应模型中定义
natural_key()方法,fixture中对应外键字段填入natural key的返回值数组即可,该方案适合主键不固定的场景。
内容的提问来源于stack exchange,提问作者Sammy
相关产品推荐
相关产品推荐

