我正在尝试实现在Django中看起来像这样的backbone.js模型:
class Booking(models.Model):
date = models.DateField('date booked')
time = models.TimeField('time booked')
duration = models.PositiveSmallIntegerField('duration booked') #x * 15
user = models.ForeignKey(User, related_name='bookings')
room = models.ForeignKey(Room, related_name='bookings')
description = models.TextField()
通过TastyPie:/ api / booking通过RESTful界面提供服务。 根据说明here:
,我的骨干模型设置如下window.Booking = Backbone.Model.extend({
url : function(){
return this.get('resource_uri') || this.collection.url;
},
urlRoot : "/api/booking",
defaults: {
user : "/api/user/5" //defaults to nobodys
}
});
window.Bookings = Backbone.Collection.extend({
url : BOOKING_API,
parse : function(data){
return data.objects;
}
});
现在尝试在控制台中测试它,如下所示:
var booking = new Booking({date : "2011-08-17", time: "12:45", duration: 30, room: "/api/room/1", description: "quickbook"});
booking.save();
上面的代码返回一个TypeError。我不明白我做错了什么。
答案 0 :(得分:2)
您没有定义resource_uri或将您的预订放入收藏中。您看到的TypeError来自this.collection.url。你会在booking.collection.url上看到同样的错误。像下面这样的东西可以解决问题。
var bookings = new Bookings;
bookings.add(booking);
booking.save();
答案 1 :(得分:1)
因为当您调用save()
方法时,模型中没有resource_uri
和this.collection
。因此,url
会返回undefined