3

我正在尝试通过 TastyPie API 访问我在项目模型中编写的购买方法。这是方法:

def purchase(self, buyer):
    sold = False
    seller = self.seller
    if self.for_sale != False:
        if seller != buyer:
            self.for_sale = False
            sold =  True
    return sold 

我已确认此功能在 shell 中有效。这是我在资源中编写的用于调用我的模型方法的购买函数:

def prepend_urls(self):
    return [
        url(r'^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/purchase%s$' % (self._meta.resource_name, trailing_slash()), self.wrap_view('purchase'), name = 'api_item_purchase'),
    ]

def purchase(self, request, **kwargs):
    self.method_check(request, allowed = ['post'])

    data = self.deserialize(request, request.body, format = request.META.get('CONTENT_TYPE', 'application/json'))


    item_id = data.get('item_id', '')
    print item_id
    buyer = request.user
    print buyer
    item = Item.objects.get(pk = item_id)
    print item

    return self.create_response(request, item.purchase(buyer)) 

我基于我发现的另一个堆栈:

用 Tastypie 暴露模型方法

但它似乎不起作用,除了“JSON 文本不是以数组或对象开头以及允许未设置片段的选项”之外,我还得到了 200 个服务器正常,但该方法实际上从未被调用。

4

0 回答 0