1

这是我的资源:

class ImageResource(ModelResource):
     album = fields.ForeignKey(AlbumResource, 'album')
     upload_by = fields.ForeignKey(UserResource, 'upload_by')


     class Meta:
         always_return_data=True
         filtering = {
                     "album": ('exact',),
                      }
    queryset = Image.objects.all()
    cache = SimpleCache(timeout=100)
    resource_name = 'image'
    authorization = ImageAuthorization()

class ImageAuthorization(Authorization):
    def read_list(self, object_list, bundle):
         # This assumes a ``QuerySet`` from ``ModelResource``.
         userprofile = UserProfile.objects.get(user = bundle.request.user)
         album = Album.objects.filter(family=userprofile.family)
         return object_list.filter(album__in=album)

当我尝试在视图中使用 ImageResource 时,例如:

 @csrf_exempt
def upload(request):
    if request.method == 'POST':
       if request.FILES:
            uploadedfile = request.FILES
            file = uploadedfile['item']
            album = Album.objects.get(pk=int(request.POST['album_id']))
            img = Image(
                album = album,
                name = file.name,
                src=file,
                upload_by = request.user,
                )
            # img.save()

            ir = ImageResource()
            uploaded_img = ir.obj_get(src=file)
            print uploaded_img


    return HttpResponse('True')

这总是会出现错误说

obj_get() takes exactly 2 arguments (1 given)

我的代码有什么问题???以及如何获取刚刚上传的图片的资源

4

1 回答 1

2

你为什么要创建实例ImageResource?这是没有意义的。

obj_get是一种美味派资源的方法,它是资源流程图的一部分。它需要一个bundle对象。

obj_get(self, bundle, **kwargs): ...

您不必为上传的每张图片即时创建资源,甚至不需要实例化一个资源,因为 url 模块会为您执行此操作。

我建议您重新阅读文档并相应地注册ImageResource和/或AlbumResource在您将资源注册到您的 urls 模块后,这些资源将自动拾取上传的图像或相册。

于 2013-05-27T13:09:00.927 回答