我是Django新手,所以我想创建一个基本的应用程序来代表航运公司的运营。我有一份工单,里面有货物。所以我的模型.py包含以下内容:
class WorkOrder (models.Model):
status = models.CharField(max_length=300,default = "New")
source = models.CharField(max_length=300)
destination = models.CharField(max_length=
material = models.CharField(max_length=300)
shipmentlist = [] //PROBLEMATIC CODE
class Shipment (models.Model):
expected_startDate = models.DateTimeField(default=timezone.now)
expected_endDate = models.DateTimeField(default=timezone.now)
shipment_status = models.CharField(max_length=300,default = "Not Started")
我有2个序列化器WorkOrderSerializer和ShipmentSerializer,我在序列化程序.py. 我想返回包含在工单对象中的装运列表。在
^{pr2}$我遵循这里指定的型号。 http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects
在我的视图.py当我收到这样的请求时,我正在调用序列化程序
def workorder_operations(request,workorder_pk):
workorder = Work_Order.objects.filter(pk=workorder_pk)
serializer = Work_Order_Serializer(workorder)
这将生成一个如下所示的json
{
"shipmentlist":[]
}
我完全搞不清有两件事:
当我改用ModelSerializer并以这种方式定义序列化程序时,一切都非常好:
class ShipmentSerializer(serializers.ModelSerializer):
class Meta:
model = Shipment
fields =('expected_startDate','expected_endDate','shipment_status')
class WorkOrderSerializer(serializers.ModelSerializer):
class Meta:
model = WorkOrder
fields =('request_id','generated_date','status', 'source','destination','material')
我想知道的是如何表示一个嵌套的对象列表,以便它们可以正确地序列化。 我希望我的WorkOrder对象的json看起来像这样:(注意:json和模型中的变量名可能不匹配,所以请忽略这一点,因为我已经删除了一些变量,以免使示例复杂化。)
{
"id": "WO20170912",
"source": "BBSR",
"destination": "RKL",
"customer_id": 1,
"material": "Granite",
"weight": 19,
"status": "ALLOCATED",
"shipments": [
{
"id":"SH01234",
"work_order_id": "WO20170912",
"source": "BBSR",
"destination": "RKL"
},
{
"id":"SH01255",
"work_order_id": "WO20170912",
"source": "BBSR",
"destination": "RKL"
}
]
}
在
WorkOrder
模型中添加ManyToManyField
序列化程序应该是
^{pr2}$相关问题 更多 >
编程相关推荐