很抱歉,如果这是一个有点令人费解......我仍然在学习Backbone.js的...
什么是加载和保存具有本身内子模型骨干模型的正确方法? (应该我甚至是具有子模型?)
例如,(原谅的CoffeeScript),如果我有这样的:
class Address extends Backbone.Model
urlRoot: '/api/v1/address/'
url: -> return @urlRoot+@id+'/?format=json'
defaults: {'city': '', 'state': ''}
class Person extends Backbone.Model
urlRoot: '/api/v1/person/'
url: -> return @urlRoot+@id+'/?format=json'
defaults: { name: 'Anon', address: new Address }
... and then I do this ...
dude = new Person
dude.set('id',101)
dude.fetch()
// Response returns {name: 'The Dude', address: '/api/v1/address/1998/'}
// And now, dude.get('address') is '/api/v1/address/1998' and no Address object
where = new Address
where.set('id',1998)
where.fetch()
// Response returns {city: 'Venice', state; 'CA'}
我想是说dude.fetch(),并且它可以同时获得这家伙和他的地址,当我打电话Backbone.sync(“更新”,老兄),我要救这两个家伙和他的地址。 怎么样?
在后端,我使用tastypie构建我的API对于一些SQLAlchemy的表(不Django的ORM),所以我有我的个人表和地址表的资源:
class AddressResource(SQLAlchemyResource):
class Meta:
resource_name = 'address'
object_class = AddressSQLAlchemyORMClass
class PersonResource(SQLAlchemyResource):
address = ForeignKey(AddressResource, 'address')
class Meta:
resource_name = 'person'
object_class = PersonSQLAlchemyORMClass
Tastypie的ForeignKey的函数创建一个返回URL到相关地址的映射。
我试图重载Dude.parse()函数来调用获取的地址(),但它不工作了,感觉错了,它提出了各种各样的问题:
- 我应该修改我tastypie响应包括地址作为一个嵌套的对象?
- 如果我更改为一个嵌套的对象,我应该是使用主干关系 ,如问题无法创建骨干,关系相关的模型 ,或者是大材小用?
- 我应该重载解析()或fetch()函数或创建我自己的backbone.Sync()获得响应,然后手动做到这一点?
- 因为它是一个对一个,我应该不是只是一个模型,而不是一个子模型,并提出一个请求一起发送回信息?
是否有这样做的标准方式吗?