2011-08-17 57 views
1

我試圖實現Backbone.js的模型,看起來像這樣在Django:/ API /預訂:Backbone.js model.save返回TypeError?

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一個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(); 

上面的代碼返回一個類型錯誤。我不明白我做錯了什麼。

回答

2

您未定義resource_uri或將您的預訂置於集合中。您看到的TypeError來自this.collection.url。您會在booking.collection.url中看到相同的錯誤。像下面的東西應該做的伎倆。

var bookings = new Bookings; 
bookings.add(booking); 
booking.save(); 
1

因爲當你調用save()方法沒有resource_uri和型號this.collection。所以你的url返回undefined

相關問題