带AngularJS的可写嵌套序列化程序Django Rest框架

带AngularJS的可写嵌套序列化程序Django Rest框架,angularjs,django,django-forms,django-rest-framework,multipartform-data,Angularjs,Django,Django Forms,Django Rest Framework,Multipartform Data,我正在尝试使用AngularJS。我在相关模型中有图像字段。所以是这样的: class TrackSerializer(serializers.ModelSerializer): class Meta: model = Track fields = ('order', 'title', 'duration', 'thumbnail') # ImageField here class AlbumSerializer(serializers.ModelSe

我正在尝试使用AngularJS。我在相关模型中有图像字段。所以是这样的:

class TrackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track
        fields = ('order', 'title', 'duration', 'thumbnail')  # ImageField here

class AlbumSerializer(serializers.ModelSerializer):
    tracks = TrackSerializer(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

    def create(self, validated_data):
        tracks_data = validated_data.pop('tracks')
        album = Album.objects.create(**validated_data)
        for track_data in tracks_data:
            Track.objects.create(album=album, **track_data)
        return album
现在,我想把它提到的文档中的数据发布如下-

>>> data = {
    'album_name': 'The Grey Album',
    'artist': 'Danger Mouse',
    'tracks': [
        {'order': 1, 'title': 'Public Service Announcement', 'duration': 245},
        {'order': 2, 'title': 'What More Can I Say', 'duration': 264},
        {'order': 3, 'title': 'Encore', 'duration': 159},
    ],
}
>>> serializer = AlbumSerializer(data=data)
>>> serializer.is_valid()
True
>>> serializer.save()
<Album: Album object>
如何做到这一点

编辑:

表单数据

$scope.submitAlbumTracks = function(){
    var fd = new FormData();
    fd.append("album_name", $scope.albumTrack.album_name);
    fd.append("artist", $scope.albumTrack.artist);
    fd.append("tracks", $scope.albumTrack.tracks);
    submissionsSvc.addAlbumTrack(fd).then(function(response){
        console.log(response);
    });
}
更新:
这似乎是相关的。有什么解决方案吗?

unicode?这是一个json解码它以获得列表我说的是曲目列表。我想把它传递给serializer,但它不会接受这种类型的数据,显示您的angularjs http请求,以及您如何构建给定给rest框架的对象
angular
.module('myapp')
.factory('submissionsSvc',function($http,$q){
    return{
        addAlbumTrack : function(){
            $http({
                    method: 'POST',
                    url: '/url',
                    data    : data,  
                    headers : { 'Content-Type': undefined },
                  }).
                    success(function(data, status, headers,config){
                      //deferred.resolve(data);
                    }).
                    error(function(data, status, headers,config){
                      //deferred.reject(status);
                    });
                }
            }
            }
$scope.submitAlbumTracks = function(){
    var fd = new FormData();
    fd.append("album_name", $scope.albumTrack.album_name);
    fd.append("artist", $scope.albumTrack.artist);
    fd.append("tracks", $scope.albumTrack.tracks);
    submissionsSvc.addAlbumTrack(fd).then(function(response){
        console.log(response);
    });
}