【发布时间】:2019-07-28 22:34:26
【问题描述】:
我的Product 模型上有JSONField,在这个模型中,我有嵌套字段。
例如:
"data": {
'products':{
"name": "ProductA",
"color": "Brown",
"price": {
"end_user": 54,
"credit_cart": 60
},
"name": "ProductB",
"color": "Red",
"price": {
"end_user": 100,
"credit_cart":120
},
}
}
我想订购嵌套的end_user 字段。
这是我的尝试:
Products.objects.order_by(RawSQL("data->>%s", ("data__price__end_user",)))
我找到了答案:
queryset = queryset.annotate(
end_user=RawSQL("data->'products'->'price'->'->'end_user'", [])
).order_by('end_user')
【问题讨论】:
-
您使用的是什么数据库后端?您需要在什么情况下订购此对象?请添加更多细节以及您想要的结果。
-
@Jane 我正在使用
PostgreSQL。我有产品和产品有不止一个价格。我想订购end_user字段。我想得到desc的订单。我已经尝试过Products.objects.order_by(RawSQL("data->>%s", ("data__price__end_user",))) -
请不要在 cmets 中发布代码。您使用的是什么服务器端语言?
-
我继续使用您提供给我的信息编辑了您的问题。您应该始终使用新信息更新您的问题。
-
主题标题是嵌套 JSONField 上的 Django order_by。你能指望什么?显然是 Python。
标签: json django postgresql