Javascript Django REST,上载的图像具有空值

Javascript Django REST,上载的图像具有空值,javascript,angularjs,django,file-upload,django-rest-framework,Javascript,Angularjs,Django,File Upload,Django Rest Framework,我有一个前端带有Django REST和Angular的简单应用程序,我在图像上传方面有问题。 我的模型: class Photo(models.Model): img = models.ImageField(upload_to='photos/', max_length=254) text = models.CharField(max_length=254, blank=True) 当我通过表单发送图像时,文本上传良好,但图像有空值。 从浏览器响应: {“img”:null

我有一个前端带有Django REST和Angular的简单应用程序,我在图像上传方面有问题。
我的模型:

class Photo(models.Model):

    img = models.ImageField(upload_to='photos/', max_length=254)
    text = models.CharField(max_length=254, blank=True)
当我通过表单发送图像时,文本上传良好,但图像有空值。
从浏览器响应:

{“img”:null,“text”:“test”}

这里是我上传图片时打印的
self.data.request

查询信息:{'text':['test'],'InMemoryUploadedFile:filename.jpg(image/jpeg)]}

序列化程序只是一个简单的
ModelSerializer
,有两个模型字段。
视图:

对于图像上传,我使用lib,尝试了另一种上传方式,图像也为空。
角度代码:

var app = angular.module('myApp', ['ngRoute', 'ngFileUpload']);

app.config(function ($routeProvider) {

    $routeProvider
         .when('/', {
            templateUrl: 'http://127.0.0.1:8000/static/js/angular/templates/home.html'
    })
});
app.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}]);
app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function($scope, Upload, $timeout) {
    $scope.uploadPic = function(file) {
    file.upload = Upload.upload({
        url: '/api/photo/',
        data: {text: $scope.text, img: file},
    });

    file.upload.then(function (response) {
      $timeout(function () {
        file.result = response.data;
      });
    }, function (response) {
      if (response.status > 0)
        $scope.errorMsg = response.status + ': ' + response.data;
    }, function (evt) {
      file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
    });
    }
}]);

您正在发布此json
data:{text:$scope.text,img:file}
,但是在
perform\u create
方法中调用了
self.request.data.get('file')
。我想你得把这个改成

serializer.save(self.request.data.get('img'))
serializer.save(self.request.data.get('img'))