我的模型中有一个JSONField,它存储以下类型的数据。
[
{
"name":"Name A",
"type":"Type1",
"class_type":"Class A"
},
{
"name":"Name B",
"type":"Type1",
"class_type":"Class A"
},
{
"name":"Name C",
"type":"Type2",
"class_type":"Class A"
}
]
我尝试了django文档的示例。但仍然返回Null
我尝试过使用SampleCategory.objects.filter(books__name = 'Name A')
答案 0 :(得分:0)
根据文档,在定义json数据时可以使用book__name
,
data = {
"name":"Name A",
"type":"Type1",
"class_type":"Class A"
}
SampleCategory.objects.create(books=data)
SampleCategory.objects.filter(books__name = 'Name A')
或者如果您将其定义为数组:
data = [
{
"name":"Name A",
"type":"Type1",
"class_type":"Class A"
},
{
"name":"Name B",
"type":"Type1",
"class_type":"Class A"
},
{
"name":"Name C",
"type":"Type2",
"class_type":"Class A"
}
]
SampleCategory.objects.create(books={'book':data})
SampleCategory.objects.filter(books__0__name = 'Name A')
如果您有一个具有类似结构的字典的数组,请考虑创建单独的模型字段并创建不同的条目。像这样:
class Book(models.Model):
name = models.CharField(max_length=255)
type = models.CharField(max_length=255)
class_type = models.CharField(max_length=255)
并将其用作SampleCategory
的FK:
class SampleCategory(models.Model):
books = models.ForeignKey(Book)
然后,您可以像给定问题一样查询(例如SampleCategory.objects.filter(books__name = 'Name A')
)。希望对您有所帮助。