【发布时间】:2014-05-14 19:30:59
【问题描述】:
我正在尝试为船舶和船舶制作一个简单的 api,并且我正在使用 django-rest-framework 作为库来生成 api。对于在模型级别具有简单字段(例如 char 字段和整数)的模型,一切都可以正常工作(创建、删除、更新、列出、获取)。
每当我尝试发布包含未检测到图像的记录时,图像字段都会出现问题。而且它总是会导致错误“序列项1:预期的字符串,找到NoneType”
下面是我的模型、序列化程序和视图文件。 序列化器
class VesselSerializer(serializers.ModelSerializer):
image = serializers.ImageField(source='image')
class Meta:
model = Vessel
fields = ('image', 'id', 'vesselType', 'name')
class VesselTypeSerilizer(serializers.ModelSerializer):
class Meta:
model = VesselType
型号
def vessel_file_name(instance, filename):
return '/'.join(['vessels', instance.id, filename]) #the error is in this line
class VesselType(models.Model):
name = models.CharField(max_length=50)
class Vessel(models.Model):
name = models.CharField(max_length=50)
vesselType = models.ForeignKey(VesselType)
image = models.ImageField(upload_to=vessel_file_name, null=True)
def __unicode__(self):
return u'%s' % self.name
观看次数
class VesselList(generics.ListCreateAPIView):
queryset = Vessel.objects.all()
serializer_class = VesselSerializer
fields = ('url', 'id', 'image', 'vesselType')
def post(self, request, format=None):
print 'entered here'
print '%' * 10
print request.DATA
print request.FILES
print '%' * 10
serializer = VesselSerializer(data=request.DATA, files=request.FILES)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class VesselDetails(generics.RetrieveUpdateDestroyAPIView):
queryset = Vessel.objects.all()
serializer_class = VesselSerializer
还需要注意的是,request.FILES和request.DATA在打印时显示正确,但出现错误,表明没有文件名,尽管名称出现在request.FILES中。
我被困在这个问题上几个小时,我似乎无法找到问题所在或我做错了什么。任何帮助将不胜感激。
【问题讨论】:
标签: django api django-rest-framework