我是Django的新手,我试图列出我的模型发票中的所有发票,并仅将项目作为其对象获取即时消息,为了使代码高效,我需要在单个查询中获取项目的全部数据获取物品的详细信息以及数据,而不是物品对象
这是我尝试过的
models.py
class ItemsInvoice(models.Model):
invoiceId = models.CharField(max_length=20)
product_Id = models.CharField(max_length=20)
item_price = models.CharField(max_length=20)
class Invoices(models.Model):
customer = models.CharField(max_length=10,null=True)
total_amount = models.CharField(max_length=12,null=True)
items = models.ManyToManyField(ItemsInvoice,related_name="item_invoice")
views.py
class InvoiceView(ListAPIView):
serializer_class = InvoiceSerializers
def get_queryset(self):
# queryset = Invoices.objects.prefetch_related('items').all().order_by('-id')
queryset = Invoices.objects.all().order_by('-id')
return queryset
serializers.py
class InvoiceSerializers(serializers.ModelSerializer):
class Meta:
model = Invoices
fields = '__all__'
如果我在邮递员上运行它,它的响应将是这样
我的API响应
[
{
"id": 69,"customer": "4","total_amount": "25000","items": [
66,67,68
]
}
]
但是实际上我想要这样的输出,即item字段应列出其中的所有数据
我想要的API响应
[
{
"id": 69,"items": [
{
"id": 66,"invoiceId": "69","product_Id": "3","item_price": "300",},{
"id": 67,"product_Id": "4","item_price": "200",{
"id": 68,}
]
}
]
我如何使用django-orm或原始查询来实现它