Got error
The submitted data was not a file. Check the encoding type on the form.
My code looks like follow:
Model:
class Document(models.Model):
name = models.CharField(max_length=100, verbose_name=_('Name'))
date = models.DateField(verbose_name=_('Date'))
project = models.ForeignKey(Project, verbose_name=_('Project'), related_name='projects')
type = models.CharField(max_length=50, verbose_name=_('Document Type'))
docfile = models.FileField(upload_to='documents/%Y/%m/%d', blank=True, verbose_name=_('Document'))
def __unicode__(self):
return self.name
My code for serializer:
class DocumentSaveSerializer(serializers.ModelSerializer):
date = serializers.DateField()
class Meta:
model = Document
fields = ('name', 'date', 'project', 'type', 'docfile')
My views:
class DocumentViewSet(WithNestedSerializerMixin, viewsets.ModelViewSet):
serializer_class = DocumentSerializer
queryset = Document.objects.all()
get_object_serializer_class = DocumentSerializer
post_serializer_class = DocumentSaveSerializer
put_serializer_class = DocumentPutSerializer
parser_classes = (FileUploadParser,)
def post(self, request, *args, **kwargs):
docfile = request.FILES['docfile']
And some code from frontend:
Directive: cmsApp.directive(
'contracts',
[
'ContractService',
'$rootScope',
function (ContractService, $rootScope) {
return {
restrict: 'A',
scope: {
contract: '=',
projectId: '=',
typeId: '=',
docFile: '='
},
templateUrl: 'main/templates/contract.html',
link: function (scope, element, attrs) {
scope.newContract = function(){
scope.contract.document.project = scope.projectId;
scope.contract.document.type = scope.typeId;
scope.contract.document.docfile = scope.docFile;
ContractService.createContract(scope.contract)
scope.contract.document = {};
};
}
}
}
]
)
And finally HTML:
<input type="file" file-model="docfile">
<span ng-if="DocumentName == 'Contract'" contracts contract="Contract" project-id="ProjectID" type-id="DocumentName" doc-file="docfile"></span>
Dont have any ideas what is wrong with this code. Anny suggestions? File is loaded properly. I test it with showing name, size etc. But when i try to POST i've got an error I mentioned at the benning.
Thanks for help
enctype='multipart/form-data'in your form tag?