gpt4 book ai didi

python - Django 装置 : Importing Nested Models

转载 作者:行者123 更新时间:2023-12-05 07:37:16 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com