我是django的新手,我使用tastypie在django中创建了一个web服务。我从我的Android应用程序发送图像,它保存在必需的文件夹中。我想获取将用户发送到我的api的图像名称。我尝试了这段代码,但我从db得到了第二个姓。我想获取用户刚刚发送的图像的姓氏,因为我必须进行处理并将响应发送回用户
这是我的模特
from django.db import models
from PIL import Image
class Foo(models.Model):
img = models.ImageField(upload_to="images/", null=True, blank=True)
这是我的api.py
from tastypie.resources import ModelResource
from tastypie.constants import ALL
from tastypie import fields
from tastypie.authorization import Authorization
from models import Foo
from article import forms
class MultipartResource(object):
def deserialize(self, request, data, format=None):
if not format:
format = request.META.get('CONTENT_TYPE', 'application/json')
if format == 'application/x-www-form-urlencoded':
return request.POST
if format.startswith('multipart'):
data = request.POST.copy()
data.update(request.FILES)
return data
return super(MultipartResource, self).deserialize(request, data, format)
class FooResource(MultipartResource,ModelResource):
img = fields.FileField(attribute="img", null=True, blank=True)
class Meta:
queryset = Foo.objects.all()
resource_name = 'article'
authorization = Authorization()
obj=Foo.objects.latest('id')
lastid=obj.pk
imagename=Foo.objects.get(id=lastid)
print imagename
答案 0 :(得分:0)
这个回答是警告,我不知道什么是tastypie,它可能做了一些奇怪的事情。
latest()旨在用于日期,而不是整数。它通过您指定的日期字段获取最新条目。 id
不是日期字段。而不是Foo.objects.latest('id')
你可以尝试Foo.objects.last()
这可能适合你,但不能保证。
解决此问题的最佳方法是在模型中添加DateField
或DateTimeField
,以节省创建图像的时间。您可以使用auto_now_add
自动执行此操作。所以在你的模型中:
class Foo(models.Model):
img = models.ImageField(upload_to="images/", blank=True)
creation_date = models.DateTimeField(auto_now_add=True)
请注意img
不应该有null=True
,因为它实际上是CharField。
然后你可以这样做:
obj = Foo.objects.latest('creation_date')