Python Django装置:导入嵌套模型
Python和Django新手,正在尝试导入.json文件。JSON文件的结构使每个根级对象都有一个嵌套对象 例如,JSON的结构如下:Python Django装置:导入嵌套模型,python,json,django,Python,Json,Django,Python和Django新手,正在尝试导入.json文件。JSON文件的结构使每个根级对象都有一个嵌套对象 例如,JSON的结构如下: [ { "model": "testapp.Person", "pk": 1, "fields": { "firstName":"Jane", "lastname":"Doe", "haircolor":"black", "mailingaddress": {
[
{
"model": "testapp.Person",
"pk": 1,
"fields": {
"firstName":"Jane",
"lastname":"Doe",
"haircolor":"black",
"mailingaddress": {
"streetaddress": "1214 Example St.",
"city": "Silver Spring",
"state": "MD",
"zipcode": "20910"
}
}
}
]
python模型定义如下:
from django.db import models
# Create your models here.
class address(models.Model):
streetaddress = models.CharField(max_length=200)
city = models.CharField(max_length=200)
state = models.CharField(max_length=5)
zipcode = models.CharField(max_length=10)
def __init__(self, streetaddress, city, state, zipcode):
self.streetaddress = streetaddress
self.city = city
self.state = state
self.zipcode = zipcode
class Person(models.Model):
firstName = models.CharField(max_length=200)
lastname = models.CharField(max_length=200)
haircolor = models.CharField(max_length=200)
mailingaddress = address(streetaddress, city, state, zipcode)
运行python manage.py loaddata
时出错,因为很明显,init参数streetaddress、city、state、zipcode
在该上下文中不存在
如何构造模型以动态生成其他对象?根据模型结构,您必须首先创建地址记录。这将是您用来保存到您创建的Person对象的记录。所以,你的固定装置看起来像这样
[
{
“型号”:“应用程序名称.地址”,
"pk":1,,
“字段”:{
“街道地址”:“1214示例街”,
“城市”:“银泉”,
“州”:“MD”,
“zipcode”:“20910”
}
},
{
“模型”:“app_name.person”,
"pk":1,,
“字段”:{
“名字”:“简”,
“姓氏”:“能源部”,
“头发颜色”:“黑色”,
“邮寄地址”:1
}
},
]
请注意,mailingaddress
的值为“1”,表示记录的主键,这就是您所需要的。
只需向JSON数组对象添加另一个元素,就可以将更多的人附加到同一地址
确保JSON fixture文件具有正确结构的另一种方法是,只需添加一些虚拟数据(一条记录就可以做到),然后将该数据转储到一个文件(例如dump.JSON)并编辑该文件以满足您的需要
这本书也很不错,所以我建议你也研究一下,以获得更多的指导
附言:
在本例中,您也不需要使用
\uuuuu init\uuuu
构造函数您找到了什么方法吗?