Две модели с принципом "один ко многим" в одном дикте JSON

У меня есть две модели для данных 'PO Header' и 'PO Item' следующим образом:

class po(models.Model):
    po_number = models.CharField(max_length=16, null=True)
    buy_org = models.CharField(max_length=20, null=True)
    supplier = models.CharField(max_length=16, null=True)

class poitm(models.Model):
    po = models.ForeignKey(po, on_delete=models.CASCADE, related_name='poitm')
    po_li = models.CharField(max_length=6, null=True)
    matnr = models.CharField(max_length=16, null=True)
    quantity = models.DecimalField(decimal_places=6, max_digits=16, null=True)

Я пытаюсь создать представление, которое возвращает объект json следующим образом:

[{'po_number':'45000123','buy_org':'Org1','supplier':'Org2','itemlist':[{'po_li':'010','matnr':'123456','quantity':'12'},{'po_li':'020','matnr':'123457','quantity':'8'}]},{'po_number':'45000124','buy_org':'Org1','supplier':'Org2','itemlist':[{'po_li':'010','matnr':'123235','quantity':'15'},{'po_li':'020','matnr':'123499','quantity':'24'}]}
]

В принципе, список заказов на покупку, каждый заказ на покупку содержит список позиций заказа на покупку.

Мне удалось создать queryset, содержащий данные, как мне нужно, но по причинам производительности при использовании datatables.net с данными dom мне нужно возвращать данные в формате json вместо циклического просмотра queryset в html-шаблоне.

def purchaseorders(request):
    polist=purchaseOrder.objects.all()
    itemlist=poItem.objects.all()
    for poentry in polist:
        poentry.itemlist=itemlist.filter(po_id=poentry.id)
    return render(request, 'purchaseorders.html', {"poitems":polist})

Похоже, что это создает queryset с каждым объектом queryset. Затем возникает проблема, когда я пытаюсь сериализовать его в json. Только поля из внешнего кверисета находятся в json-результате.

Я искал и пытался два дня, теперь вращаюсь кругами, пожалуйста, помогите.

Вернуться на верх