【发布时间】:2021-01-12 17:15:04
【问题描述】:
我要制作的模型类似于youtube api模型。
{
"videos": [
{
"id": "7lCDEYXw3mM",
"snippet": {
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"title": "Google I/O 101: Q&A On Using Google APIs",
"categoryId": "28"
},
"statistics": {
"viewCount": "3057",
"likeCount": "25",
"dislikeCount": "0",
"favoriteCount": "17",
"commentCount": "12"
}
}
]
}
我尝试使用ArrayField,但是当我将字段列表发布到数组中时,我一直收到此错误:
"Expected a list of items but got type \"dict\"."
这是目前的模型
class Menu(models.Model):
burgers = ArrayField(
ArrayField(
models.CharField(max_length=10, blank=True),
size=8,
),
size=8,
default=None
)
beverages = ArrayField(
ArrayField(
models.CharField(max_length=10, blank=True),
size=8,
),
size=8,
default=None
)
extras = ArrayField(
ArrayField(
models.CharField(max_length=10, blank=True),
size=8,
),
size=8,
default=None
)
fries = ArrayField(
ArrayField(
models.CharField(max_length=10, blank=True),
size=8,
),
size=8,
default=None
)
我想让 Array 中的每个项目都有自己的 name 和 price 字段。
{
"burgers": [
0:{
"name":"Plain patty",
"price":4
},
1:{
"name":"Cheese buns",
"price":8
}
]
}
我怎样才能使用jsonb?
【问题讨论】:
-
django.contrib.postgres.fields.JSONField is deprecated. Support for it (except in historical migrations) will be removed in Django我做了,但它说它被贬低了。 -
@MikiyasAyele:你应该从
django.db.models导入JSONField:docs.djangoproject.com/en/3.1/ref/models/fields/… -
正如威廉所说,将
JSONField导入为from django.db.models import JSONField
标签: django postgresql django-rest-framework jsonb