使用具有angularjs的Django Rest Framework保存图像时出错 [英] Error while saving image using Django Rest Framework with angularjs

查看:166
本文介绍了使用具有angularjs的Django Rest Framework保存图像时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个模型博客,照片。在照片模型中,我将字段'博客'作为博客模型的外键。



models.py:

  def content_file_name(instance,filename):
custt = str(datetime.now())
return'/'.join(['content',instance.blogs slug,custt,filename])

类照片(models.Model):
blogs = models.ForeignKey(Blogs)
image = models.ImageField(upload_to = content_file_name)

class Blogs(models.Model):
author = models.ForeignKey(CustomUser)
title = models.CharField(max_length = 100)
postedin = models。 ForeignKey(发布)
标签= models.ManyToManyField(标签)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField (auto_now = True)
slug = models.SlugField(max_length = 255,unique = True)

def __unicode __(self):
return'{0} self.title)

views.p y:

  class PhotoViewSet(viewsets.ModelViewSet):
queryset = Photo.objects.all()
serializer_class = PhotoSerializer

def perform_create(self,serializer):
serializer.save(blogs = Blogs.objects.latest('id'))
return super(PhotoViewSet,自己).perform_create(serializer)

serializers.py:

  class PhotoSerializer(serializers.ModelSerializer):
image = serializers.ImageField(
max_length = None,use_url = True,

class Meta:
model =照片
read_only_fields =(blogs)

js:

  function uploadpic(image){
var fd = new FormData();
fd.append('image',image);
return $ http.post('/ api / v1 / uploadpic /',fd,{
headers:{'Content-Type':'application / x-www-form-urlencoded; charset = -8'}
});
}

结果:



{image:[没有提交文件。]}



另外我想知道,有没有更好的方法来获取博客的价值(外键)

解决方案

在js:

 标题:{'Content-Type':undefined} 

这解决了问题。 / p>

I have two models Blogs, Photo. In Photo model I have fields 'blogs' as foreign key to Blogs model.

models.py:

def content_file_name(instance, filename):
    custt=str(datetime.now())
    return '/'.join(['content', instance.blogs.slug,custt, filename])

class Photo(models.Model):
    blogs = models.ForeignKey(Blogs)
    image = models.ImageField(upload_to=content_file_name)

class Blogs(models.Model):
    author = models.ForeignKey(CustomUser)
    title=models.CharField(max_length=100)
    postedin=models.ForeignKey(Posted)
    tags= models.ManyToManyField(Tags)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    slug=models.SlugField(max_length=255,unique=True)

    def __unicode__(self):
        return '{0}'.format(self.title)

views.py:

class PhotoViewSet(viewsets.ModelViewSet):
    queryset=Photo.objects.all()
    serializer_class = PhotoSerializer

    def perform_create(self,serializer):
        serializer.save(blogs=Blogs.objects.latest('id'))
        return super(PhotoViewSet,self).perform_create(serializer)

serializers.py:

class PhotoSerializer(serializers.ModelSerializer):
    image = serializers.ImageField(
    max_length=None, use_url=True,
    )
    class Meta:
        model = Photo
        read_only_fields = ("blogs",)

js:

function uploadpic(image) {
var fd = new FormData();
fd.append( 'image', image );
  return $http.post('/api/v1/uploadpic/',fd, {
    headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
});
}

result:

{image: ["No file was submitted."]}

Also I want to know, is there a better way to get blogs value (Foreign Key) for Photo Model.

解决方案

In js:

headers: { 'Content-Type': undefined}

This solves the problem.

这篇关于使用具有angularjs的Django Rest Framework保存图像时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆