我有以下资源,我正在尝试覆盖obj_create。如果我不重写它,一切都会很好地工作,但是当我覆盖它时,它会给出一个POST错误。有线索吗?我真的很感谢你的回答,不过我相信Tastype最近在堆栈溢出问题上没有得到任何答案。。这很烦人。我也在考虑换我的堆栈出于同样的原因。。在
代码如下:
class OrderResource(BackBoneCompatibleResource):
person = fields.ToOneField(PersonResource, 'person', full=True)
restaurant = fields.ToOneField(RestaurantResource, 'restaurant', full=True)
itemList = fields.ToManyField(OrderItemResource, 'itemList', full=True)
class Meta:
object_class = Order
queryset = Order.objects.all().order_by("-time_updated")
resource_name = 'order'
allowed_methods = ['get','post','put','delete','patch']
authorization = Authorization()
serializer = Serializer(formats=['json', 'jsonp', 'xml', 'yaml', 'html', 'plist'])
authentication = ClientAuthentication()
authorization = OrderAuthorization()
always_return_data = True
filtering = {
"restaurant" : ["exact"],
"time_created" : ["gte"],
"person" : ["exact"]
}
def obj_create(self, bundle, request=None, **kwargs):
print "Entered Order Create"
return super(OrderResource, self).obj_create(bundle, request, **kwargs)
订单模型是:
^{pr2}$如前所述,如果我从资源中删除obj_create()函数,post就会正常进行。我无法理解我做了什么错事,我只是按照文档中指定的方式编写默认函数?我可能错过了一些很明显的东西。谢谢你的时间。。在
我得到的具体错误如下,但不确定它是否有帮助。。在
<type 'exceptions.TypeError'>, TypeError('obj_create() takes exactly 2 arguments (3 given)',), <traceback object at 0x10d30fb90>
更改此行:
为此:
^{pr2}$request
must be passed as a keyword argument。在当您调用}?这意味着它无法处理传递给它的
super().obj_create
时,您正在向父方法传递它不期望的参数。错误消息告诉您出了什么问题,当您查看documentation中的父方法时,它是有意义的。它捕捉到**kwargs
,但是看怎么没有{request
参数。在我建议您使用相同的方法签名在子类上定义
^{pr2}$obj_create
,这样就不会混淆调用方的期望。父对象没有显式地处理request
,因此您也不应该这样做。最终代码:相关问题 更多 >
编程相关推荐