【发布时间】:2014-12-17 07:14:50
【问题描述】:
我有以下资源,我正在尝试覆盖 obj_create。如果我不覆盖它,一切都会完美运行,但是当我覆盖它时,它会出现 POST 错误。有什么线索吗?真的很感激一个答案,虽然我相信这些天美味派真的没有得到任何关于堆栈溢出的答案..这很烦人。我正在考虑可能出于同样的原因切换我的堆栈..
代码如下:
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)
订单模型是:
class Order(models.Model):
restaurant = models.ForeignKey(Restaurant)
person = models.ForeignKey(Person)
tableNumber = models.CharField(max_length=2)
PLACED = 'p'
ACCEPTED = 'a'
READY = 'r'
ORDER_STATUS_CHOICES = (
(PLACED, 'Placed'),
(ACCEPTED, 'Accepted'),
(READY, 'Ready'),
)
order_status = models.CharField(max_length=1, choices=ORDER_STATUS_CHOICES, default=PLACED)
itemList = models.ManyToManyField(OrderItem, null=True)
tax = models.FloatField()
tip = models.FloatField()
cost = models.FloatField()
time_created = models.DateTimeField(auto_now_add=True)
time_updated = models.DateTimeField(auto_now=True)
正如我所说,如果我从资源中删除 obj_create() 函数,则 post 会正常进行。通过编写文档中指定的默认函数,我无法理解我在做什么错?我可能遗漏了一些非常明显的东西。谢谢你的时间..
我得到的具体错误如下,但不确定它是否有很大帮助..
<type 'exceptions.TypeError'>, TypeError('obj_create() takes exactly 2 arguments (3 given)',), <traceback object at 0x10d30fb90>
【问题讨论】:
-
错误是什么?发布完整的回溯。
-
我收到以下错误,我不知道这是多么具体或有帮助..
(<type 'exceptions.TypeError'>, TypeError('obj_create() takes exactly 2 arguments (3 given)',), <traceback object at 0x10e33f368>) -
有人吗?我一直在为此苦苦挣扎,这似乎是一个小问题..