我想进行以下查询以获取具有以下特征的查询集:
在我的代码中,我有:
q = DatiBanca.objects\
.filter(is_negativo=False)\
.values("istituto_credito__name")\
.order_by("istituto_credito__name")
anagrafiche = anagrafiche.prefetch_related(
Prefetch('dati__banche', queryset=q)
)
数据集JSON:
"dataset": {
"id": 40,
"banche": [
{
"id": 18396,
"name": "Pippo",
"importo": "10",
"istituto_credito": 3,
"is_negativo": false
},
{
"id": 18397,
"name": "Pippo",
"importo": "20",
"istituto_credito": 3,
"is_negativo": false
},
{
"id": 18398,
"name": "Pippo",
"importo": "999999999999",
"istituto_credito": 3,
"is_negativo": true
},
{
"id": 16519,
"name": "Pluto",
"importo": "40",
"istituto_credito": 5,
"is_negativo": false
},
{
"id": 13967,
"name": "Paperino",
"importo": "50",
"istituto_credito": 4,
"is_negativo": false
}
]
}
此查询给我以下错误:
“预取查询集不能使用values()。”
如何从数据集中获得以下结果?
"dataset": {
"id": 40,
"banche": [
{
"name": "Pippo",
"importo": "30",
"istituto_credito": 3,
"is_negativo": false
}
{
"name": "Pluto",
"importo": "40",
"istituto_credito": 5,
"is_negativo": false
},
{
"name": "Paperino",
"importo": "50",
"istituto_credito": 4,
"is_negativo": false
}
]
}
this example: How to combine django “prefetch_related” and “values” methods? 不要使用“预取”功能并将结果限制为一个字段。我想对Anagrafica的子查询集进行分组操作
我用 django 2.1.5
答案 0 :(得分:0)
您可以只删除原始查询上的values()调用,如下所示:
q = DatiBanca.objects\
.filter(is_negativo=False)\
.order_by("istituto_credito__name")
anagrafiche = anagrafiche.prefetch_related(
Prefetch('dati__banche', queryset=q)
)
现在anagrafiche
中的每个对象都是一个DatiBlanca
对象,其中预取了DatiBlanca.dati.banche
。然后,您可以稍后在此查询集中列出DatiBlanca.istituto_credito.name
的值。