Python Django装置:导入嵌套模型

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": {

Python和Django新手,正在尝试导入.json文件。JSON文件的结构使每个根级对象都有一个嵌套对象

例如,JSON的结构如下:

[
{
    "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
构造函数

您找到了什么方法吗?