代码之家  ›  专栏  ›  技术社区  ›  Tomasz Zieliński

修复连接到多个站点的平面图的Django管理预览的最佳方法

  •  0
  • Tomasz Zieliński  · 技术社区  · 15 年前

    我将平面图附加到多个站点。它的管理预览选择 任意站点,调试到线路后比较明显 35-36 of django.contrib.contenttypes.views.shortcut() .

    解决这个问题的最佳方法是什么?

    我明白了 shortcut() 函数接受 request 对象,因此我可以从中提取主机,但我更喜欢不修补活动服务器。

    我还没有考虑过获取管理URL,所以也许有人可以建议一些好的解决方案?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Carl Meyer    15 年前

    在我看来,这在Django中可能被视为一个bug,至少部分修复方法是检查当前站点的ID是否是与对象相关的站点之一,如果是,请使用该站点而不是任意站点。你可以用补丁把票归档。

    要在不修补django的情况下修复它,您可以查找覆盖平面页面模型的管理编辑表单模板,以便将所需的URL放入该链接,而不是转到快捷方式视图的默认URL。我对它的研究还不够深入,不知道它有多干净。

    另一种选择可能是MonkeyPatch使用get_absolute_url方法对平面页面模型进行修补,该方法实际返回一个完整的绝对URL,包括基于site.objects.get_current().domain的域。