python - Django 装置 : Importing Nested Models

标签 python json django

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 时出现错误,因为很明显,初始化参数 streetaddress, city, state, zipcode 在该上下文中不存在。

如何构建我的模型以动态生成那些其他对象?

最佳答案

根据您的模型结构,您必须首先创建一个地址记录。这将是您用来保存到您创建的 Person 对象的记录。所以,你的夹具看起来像这样

[
    {
        "model": "app_name.address",
        "pk": 1,
        "fields": {
            "streetaddress": "1214 Example St.",
            "city": "Silver Spring",
            "state": "MD",
            "zipcode": "20910"
        }
    },
    {
        "model": "app_name.person",
        "pk": 1,
        "fields": {
            "firstName":"Jane", 
            "lastname":"Doe", 
            "haircolor":"black",
            "mailingaddress":1
        }
    },
]

请注意,mailingaddress 的值“1”表示记录的主键,这就是您所需要的。 您只需向 JSON 数组对象添加另一个元素,即可将更多人添加到同一地址。

另一种确保您的 JSON fixture 文件具有正确结构的方法是仅添加一些虚拟数据(一个记录应该这样做)然后将该数据转储到一个文件(例如 dump.json)并编辑该文件以满足您的需求。

django documentation也很不错,所以我建议您也查看它以获得更多指导。

附言: 在这种情况下,您也不需要 __init__ 构造函数

关于python - Django 装置 : Importing Nested Models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725546/

相关文章:

python - 如何在 Django REST 框架中获取用户?

python - 模拟 Django 查询集以测试采用查询集的函数

python - Django 编程错误 : relation already exists after a migration created in the Django source code?

python - 对列表中的连续数字求和。 Python

javascript - vue.js 渲染表与 rowspans

javascript - 类型错误 : Cannot read property 'url' of undefined for JSONPlaceholder

android - Gridview——点击图片在Viewpager中查看图片

python - Heroku 上的 Django manage.py 自定义命令

python - 在 python 中将 2D 切片合并到 3D 体积

python - Flask 为生产和开发中 URL 不同的资源创建 URL 的方法