Django:如何在JSON字符串中包含相关模型?
在这个问题的基础上,我现在遇到了另一个问题。给定这个内容,
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')