小编Chr*_*ian的帖子

DRF - 整数数组

我需要将整数数组发送到 DRF 序列化器。

序列化器是:

class ItemSerializer(serializers.Serializer):
    id = serializers.IntegerField(required = False)
    selected_items = serializers.ListField(child = serializers.IntegerField())
Run Code Online (Sandbox Code Playgroud)

在 FE 中,我只需通过打字稿发布一个数组:

createItem () {
    let tmp: any = {};
    const itemData = new FormData();
    itemData.append('id',1);
    itemData.append('selected_items', this.current.selected_items.map( e => e.id))

    return this.itemService.createItem( itemData )
        .subscribe( data => this.goBack( data ),
            err => {
                console.log( err );
                this.toastr.error( 'Item not saved', 'Error' )
            } );
}
Run Code Online (Sandbox Code Playgroud)

itemService.createItem只做一个http.post

当 FE 发送数据到 BE 时,selected_items 字段被编码为selected_items=1,2(通过wireshark验证)。当从 DRF 解析数据时,该字段被编码为selected_items=['1,2']. 因此该字段未经过验证,因为 1,2 不是有效整数。

python arrays integer django-rest-framework typescript

5
推荐指数
1
解决办法
4294
查看次数