Две модели с принципом "один ко многим" в одном дикте 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-результате.
Я искал и пытался два дня, теперь вращаюсь кругами, пожалуйста, помогите.