【发布时间】:2020-01-21 17:31:03
【问题描述】:
大家好,我在尝试构建此端点的工作方式时遇到了一些麻烦。目前我希望这个端点 "/nba/players?date=01012016" 能够通过两个不同的端点来工作。
目前我的 GameDates 端点返回类似于
的内容{id: 1, home_team_id: 1, away_team_id: 2, date: "1/1/2016"},
{id: 4, home_team_id: 2, away_team_id: 3, date: "1/2/2016"}
我想获取 GameDate_id 或它的主键(在本例中为 id:1),然后将其传递到另一个 PlayerStatistic 端点,该端点将返回类似这样的内容 -
{id: 1, game_id: 1, player_id: 1, team_id: 1, points: 20, assists: 10, rebounds: 2},
{id: 2, game_id: 1, player_id: 2, team_id: 1, points: 15, assists: 2, rebounds: 2},
{id: 3, game_id: 1, player_id: 3, team_id: 2, points: 10, assists: 2, rebounds: 20},
{id: 4, game_id: 1, player_id: 4, team_id: 2, points: 5, assists: 1, rebounds: 2}
我使用日期查询的初始端点将返回这四个 JSON,因为玩家在该日期 (game_id = 1) 有来自 GameDate 端点的游戏,然后该 game_id 用于查询 PlayerStatistic 端点并返回。
我知道重写 get_queryset 函数的正确方法,例如 -
def get_queryset(self):
date = self.request.query_params.get('date')
queryset = self.queryset
if date:
# the rest here?
获取参数,但我不知道如何从那里开始。
编辑 - 在下面添加了我的模型 -
class Player(models.Model):
# class for Player model
name = models.CharField(max_length=100)
team_id = models.ForeignKey(Team, on_delete=models.CASCADE)
class GameDate(models.Model):
# class for GameDate model
home_team_id = models.ForeignKey(Team, related_name='home_games',
on_delete=models.CASCADE)
away_team_id = models.ForeignKey(Team, related_name='away_games',
on_delete=models.CASCADE)
date = models.DateField()
class PlayerStatistic(models.Model):
# class for individual player statistics
game_id = models.ForeignKey(GameDate, on_delete=models.CASCADE)
player_id = models.ForeignKey(Player, on_delete=models.CASCADE)
team_id = models.ForeignKey(Team, on_delete=models.CASCADE)
points = models.IntegerField()
assists = models.IntegerField()
rebounds = models.IntegerField()
【问题讨论】:
-
你想错了。您不能从另一个端点调用端点,至少没有必要这样做。您只需要调用您的 playerstats 端点并根据日期正确过滤玩家查询集。向我们展示您的游戏和玩家模型(或玩家统计数据)。
-
@dirkgroten 我已经用我的模型更新了我的帖子。
标签: python django rest django-rest-framework endpoint