Мне нужно отправить массив целых чисел в сериализатор DRF.
Сериализатор:
class ItemSerializer(serializers.Serializer):
id = serializers.IntegerField(required = False)
selected_items = serializers.ListField(child = serializers.IntegerField())
Из 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' )
} );
}
itemService.createItem
выполняет только http.post
Когда FE отправляет данные в BE, поле selected_items кодируется как selected_items=1,2
(проверено с помощью wirehark). Когда данные анализируются из DRF, поле кодируется как selected_items=['1,2']
. Таким образом, поле не проверяется, потому что 1,2 не является действительным целым числом.