Django:如何在JSON字符串中包含相关模型?

1 投票
1 回答
1378 浏览
提问于 2025-04-16 06:12

在这个问题的基础上,我现在遇到了另一个问题。给定这个内容,

shipments = Shipment.objects.filter(filter).exclude(**exclude).order_by(order) \
    .annotate(num_bids=Count('bids'), min_bid=Min('bids__amount'), max_bid=Max('bids__amount')) \
    .select_related('pickup_address','dropoff_address','billing_address')

return HttpResponse(simplejson.dumps(list(shipments.values()), ensure_ascii=False, default=json_formatter), mimetype='application/json')

它实际上并没有在JSON中包含 pickup_address 等字段。我该如何让它包含相关的字段呢?

1 个回答

1

你可以使用一种叫做列表推导的方式,里面放满了包含发货信息的字典,并且相关的对象也填充好了。这个API给每个地址都提供了一个明确的名称。使用位置标记的方式太简单了,容易把货物发到账单地址。Josh Block的《如何设计一个好的API以及为什么这很重要》值得一读。

shipments = [{
    'shipment':s,
    'pickup_address': s.pickup_address, 
    'dropoff_address': s.dropoff_address, 
    'billing_address': s.billing_address,
} for s in shipments]

return HttpResponse(simplejson.dumps(shipments, ensure_ascii=False, default=json_formatter), mimetype='application/json')

撰写回答