0

我有以下资源,并试图在 api 前面添加一个 url,并获取制造商资源的所有俱乐部。目前,我只是想得到所有俱乐部的回应(注意我只是做了一个objects.all(),因为我现在只想要数据,我稍后会过滤它)。我的问题是,当我点击网址时,我确实得到了俱乐部,但是,它们不是 json 格式,结果如下所示:

"[<Club: Club object>, <Club: Club object>]"

我需要添加什么到 create_response 以便它返回 json 格式的对象以便它可以使用 - 基本上,让它吹出对象而不是将它们保留为

"[<Club: Club object>]"

这是俱乐部的样子:

{
  "_id" : "5275b295fa57952e260243e5|Fairway|1",
  "manufacturer" : "Adams",
  "head_material" : null,
  "image_url" : "https://blah.com",
  "year" : "0",
  "name" : "Tight Lies GT Xtreme Offset",
  "url" : "http://blah.com"
}

这是资源:

class ManufacturerResource(resources.MongoEngineResource):
    class Meta:
        queryset = documents.Manufacturer.objects.all().order_by('id')
        allowed_methods = ('get')
        resource_name = 'manufacturers'
        include_resource_uri = False

    def prepend_urls(self):
        return [
            url(r"^(?P<resource_name>%s)/(?P<pk>[\w\d_.-]+)/drivers/$" % self._meta.resource_name, self.wrap_view('get_manufacturer_drivers'), name="api_get_manufacturer_drivers"),

    ]

    def get_manufacturer_drivers(self, request, **kwargs):
        drivers = documents.Club.objects.all().order_by('id')

        return self.create_response(request, drivers)
4

1 回答 1

0

在挖掘和挖掘之后,我最终弄清楚了这一点。我找不到任何内置的东西来做我创建的。我所做的是用一些静态方法创建了一个 HelperMethod 类。这是我想出的:

class HelperMethods:
    @staticmethod
    def obj_to_dict(object):
        return_data = {}
        for property, value in vars(object).iteritems():
            return_data[property] = value

        return return_data['_data']

    @staticmethod
    def obj_to_list(objects):
        return_data = []
        for object in objects:
            return_data.append(HelperMethods.obj_to_dict(object))
        return return_data

用法:

        return self.create_response(request, HelperMethods.obj_to_list(drivers))

希望这可以帮助某人。

于 2013-11-10T06:25:48.290 回答