我正在尝试通过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))
我的基础是我发现的另一个堆栈:
Exposing model method with Tastypie
但它似乎没有工作,除了“JSON文本没有以数组或对象启动以及允许片段未设置的选项”之外我得到200服务器ok但是该方法实际上从未被调用过。