在Django中序列化单个Related字段



在我的Django应用程序中,我从serializer获取数据,如下所示:

{
"id": 98,
"flows": [
{
"id": 99,
"asked_quantity": 14,
"alloted_quantity": 14,
"flow": 1,
"kit": 1                    #this
}
],
"transaction_no": 2317,
"dispatch_date": "2020-07-27T04:42:46.356000Z",
"is_delivered": false,
"model": "Rent",
"driver_name": "__________",
"driver_number": "__________",
"lr_number": 0,
"vehicle_number": "__________",
"freight_charges": 0,
"vehicle_type": "Part Load",
"expected_delivery": "2020-07-27T04:42:46.356000Z",
"remarks": "0",
"send_from_warehouse": 1,            #this
"sales_order": 98,
"transport_by": 4,
"owner": 2
},

其中Flows是许多连接字段,我只想从流和send_from_warehouse中扩展kit,但当我增加深度时,所有相关字段都会扩展。

以下是我尝试的方法:

class KSerializer(serializers.ModelSerializer):
class Meta:
model = Kit
fields = "__all__"

class WSerializer(serializers.ModelSerializer):
class Meta:
model = Warehouse
fields = "__all__"

class AFSerializer(serializers.ModelSerializer):
kit = KSerializer(many=True)
class Meta:
model = AllotmentFlow
fields = "__all__"

class AReportSerializer(serializers.ModelSerializer):
flows = AFSerializer(many=True)
send_from_warehouse = serializers.RelatedField(source='warehouse.pk', read_only=True)
class Meta:
model = Allotment
fields = "__all__"

但我得到了一个错误,"kitsis not serializable andsend_from_warehouse"从JSON中消失。请解释为什么会发生这种情况,的正确方法是什么

class AFSerializer(serializers.ModelSerializer):
class Meta:
model = AllotmentFlow
fields = "__all__"

class AReportSerializer(serializers.ModelSerializer):
flows = AFSerializer(many=True)
send_from_warehouse = serializers.SlugRelatedField(
read_only=True,
slug_field='send_from_warehouse'
)
class Meta:
model = Allotment
fields = "__all__"

我想这就是你要找的。

最新更新