これが少し複雑な場合は申し訳ありません...私はまだ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('update',dude) を呼び出すと、男と彼のアドレスの両方を保存したいと思います。どのように?
バックエンドでは、tastypie を使用していくつかの SQLAlchemy テーブル (Django の ORM ではない) の API を構築しているため、Person テーブルと Address テーブルのリソースがあります。
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() 関数をオーバーロードして Address() の fetch を呼び出してみましたが、機能せず、間違っていると感じ、さまざまな疑問が生じました。
- Address をネストされたオブジェクトとして含めるように、tastypie 応答を変更する必要がありますか?
- ネストされたオブジェクトに変更する場合、Backbone-Relational related models not being createdという質問のように、backbone-relationalを使用する必要がありますか、それともやり過ぎですか?
- parse()または fetch() 関数をオーバーロードするか、独自の backbone.Sync() を作成して応答を取得し、これを手動で行う必要がありますか?
- 1 対 1 の場合、サブモデルではなく 1 つのモデルだけを使用して、1 つの要求で情報をまとめて送信する必要がありますか?
これを行う標準的な方法はありますか?