Django Fallback从外部API建模查找

时间:2018-04-12 13:17:02

标签: python django django-rest-framework

我正在使用Django REST框架为网站前端提供JSON内容。在后端,我有两个Django模型,Player和Match,每个都引用另一个的多个。匹配包含多个玩家,玩家包含多个匹配。此数据最初是从第三方API检索的。

匹配和玩家必须与API分开获取,并且一次只能获取一个。获取对象时,其数据将从外部JSON格式转换为我的Django模型。此时,Match / Player将永远存在于Django中。困难的部分是我希望这种外部提取是无缝的。如果我查询一个玩家或匹配并且它在数据库中,那么只需提供我们在那里的服务。否则,我想从外部数据库中获取该对象。

我的问题是,Django是否提供了任何方便的处理方式?理想情况下,Match.objects.get(id=...)行的任何查询都将透明地处理此API回退(我不介意在某些情况下此查询可能需要更长的时间)。

1 个答案:

答案 0 :(得分:0)

如果某种方式“方便”取决于您的期望......

您可以创建自定义QuerySet,覆盖get()方法以包含fetch-from-API逻辑。然后,您可以基于该QuerySet创建自定义管理器,就像文档显示here一样。 最后将该自定义管理器添加到您的模型中。

另见this question from 2011