2014-05-04 79 views
0

我是django的新手,我在django中使用tastypie做了一个webservice。我从我的Android应用程序发送图像,并将其保存在所需的文件夹中。我想获取将我的用户发送到我的API的图像的名称。我试过这段代码,但我从数据库中获取第二个姓。我想这是刚刚由用户发送,因为我必须做的处理和响应发送回用户从数据库中获取姓氏django

图像的姓氏这是我的模型

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

这个答案是与我不知道什么tastypie是什么,它可能会做一些奇怪的事情的警告。

latest()是用于日期而不是整数。它通过您指定的日期字段获取最新条目。 id不是日期字段。您可以尝试使用Foo.objects.last()而不是Foo.objects.latest('id'),这可能适合您,但不能保证。

解决此问题的最佳方法是将DateFieldDateTimeField添加到您的模型中,以节省图像的创建时间。您可以使用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')