【问题标题】:Django Fallback to model lookup from external APIDjango 回退到从外部 API 查找模型
【发布时间】:2018-04-12 13:17:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    一种方式是否“方便”取决于您的期望......

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

    另见this question from 2011

    【讨论】:

    • 谢谢!我将通读该文档,看看是否能弄清楚。
    • 这对您有帮助吗?你能让它工作吗?如果是这样,如果您将答案标记为已接受,我将不胜感激。
    • 是的,很抱歉。我结束了创建一个新的管理器和查询集,并覆盖了 get。
    猜你喜欢
    • 2017-10-12
    • 2016-05-17
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多