1

次のおいしいパイのリソースがあります。

class ArtistResource(SearchableResource):
    audio_tracks = fields.ToManyField('music.api.AudioTrackResource', 'audio_tracks', related_name='artists', null=True, blank=True)
    class Meta:        
        filtering = {
        "title": ('startswith',),
        "id": ALL_WITH_RELATIONS,
        }
    queryset = Artist.objects.all()
    resource_name = 'artist'
    allowed_methods = ['get']

class AudioTrackResource(SearchableResource):
    artists = fields.ToManyField('music.api.ArtistResource', 'artists', null=True, blank=True)
    class Meta:
        filtering = {
        "artists": ALL_WITH_RELATIONS,
        }
    queryset = AudioTrack.objects.all()
    resource_name = 'audio_track'
    allowed_methods = ['get']

そして、次のバックボーン モデル:

class Track extends Backbone.RelationalModel
  urlRoot: TRACK_API
  relations: [
  {
  type: Backbone.HasMany
  key: 'artists'
  relatedModel: Artist
  collectionType: ArtistCollection
  reverseRelation:
    key: 'track'
    includeInJSON: 'title'
  }
  ]  
  Track.setup()
  Track

class Artist extends Backbone.RelationalModel
    urlRoot: ARTIST_API
    relations: [
    {
    type: Backbone.HasMany
    key: 'audio_tracks'
    relatedModel: Track
    collectionType: TrackCollection
    reverseRelation:
      key: 'artist'
      includeInJSON: 'title'
    }
    ]

   Artist.setup()
   Artist

また、再帰が発生するため、Tastypie リソースにfull=Trueを設定できません... full=True を設定したくありません。しかし、いつ、どこでfetchRelated()を行うべきかわかりません。そして、オブジェクト URI の配列が既に存在するため、何もフェッチしません。両側で JSON との多対多の関係を設定する別の方法はありますか?

PS私はこの問題をグーグルで3日間調べた後にこの質問を作成しましたが、有効な解決策が見つかりませんでした。

4

0 に答える 0