我有3个型号。游戏,玩家和作品。玩家附加到游戏上并且玩家附加到玩家。关系是简单的外键。
在检索游戏时,我还希望从所有玩家中检索所有棋子并将其包含在结果中。
class GameResource(ModelResource):
class Meta:
queryset = Game.objects.all()
resource_name = 'game'
allowed_methods = ['get']
class PlayerResource(ModelResource):
game = fields.ForeignKey(GameResource, 'game')
class Meta:
queryset = Player.objects.all()
resource_name = 'player'
allowed_methods = ['get']
class PieceResource(ModelResource):
player = fields.ForeignKey(PlayerResource, 'player')
class Meta:
queryset = Piece.objects.all()
resource_name = 'piece'
allowed_methods = ['get']
我不知道这是怎么做到的。我最初改变了脱水,以便它只是做正确的查询,调用django serialize,并将它放在bundle中的一个新变量中。这对我来说似乎是一个躲闪。查询集的序列化也被tastypie再次序列化,导致它转义引号字符(urgh)。
答案 0 :(得分:6)
解决方案如下:
class GameResource(ModelResource):
players = fields.ToManyField('blokus.api.PlayerResource', 'player_set', full=True)
class Meta:
queryset = Game.objects.all()
resource_name = 'game'
allowed_methods = ['get']
authorization = Authorization()
class PlayerResource(ModelResource):
game = fields.ForeignKey(GameResource, 'game')
pieces = fields.ToManyField('blokus.api.PieceResource', 'piece_set', full=True)
class Meta:
queryset = Player.objects.all()
resource_name = 'player'
allowed_methods = ['get']
authorization = Authorization()
class PieceResource(ModelResource):
player = fields.ForeignKey(PlayerResource, 'player')
class Meta:
queryset = Piece.objects.all()
resource_name = 'piece'
allowed_methods = ['get']
authorization = Authorization()