代码之家  ›  专栏  ›  技术社区  ›  Piotr Czapla

Django应用程序初始化代码(如连接到信号)

  •  8
  • Piotr Czapla  · 技术社区  · 16 年前

    当我把代码放到 __init__.py 一个应用程序的模块,我最终得到了模型的循环导入。

    我使用的是django 96.6的旧版本,但我也对当前版本的解决方案感兴趣。

    关于其他问题的重复: 以下是该问题与S.Lott在评论中提出的重复问题的不同之处:

    对当前解决方案的评论:

    4 回复  |  直到 9 年前
        1
  •  5
  •   Ben Edwards    16 年前

    具体而言,建议将信号放入应用程序的models.py中。

    请尝试models.py或url.py,如果您运气好,请告诉我们。

        2
  •  5
  •   Alex Gaynor    16 年前

        3
  •  2
  •   Will Hardy    16 年前

    如果你不提供URL,那么你真的需要把它放进去 models.py

    现在,关于您的问题:您想在它自己的模块中定义它,太好了,请这样做。要避免循环导入,请使用 django.db.models.get_model 为您动态返回模型。您可以为信号模块提供初始化功能,以导入相关型号并连接相关信号。然后,将在结束时调用此函数 models.py

    这仍然有可能不起作用(如果您在设置模型时模型还没有准备好),但请尝试一下,并让我们知道。

        4
  •  0
  •   Risadinha    11 年前

    对我来说,以下工作:

    在里面 初始化 .py:

    from . import models
    from . import signals
    

    signals.py