在Django应用程序上运行代码启动

时间:2016-08-24 14:42:38

标签: python django

每次我的应用程序启动时都需要运行一些代码。我需要能够操作模型,就像在实际查看代码中一样。具体来说,我试图破解内置的用户模型以支持更长的用户名,所以我的代码是这样的

def username_length_hack(sender, *args, **kwargs):
    model = sender._meta.model
    model._meta.get_field("username").max_length = 254

但我似乎无法找到合适的地方。我尝试在使用用户模型的应用程序的models.py或app.py中添加一个class_prepared信号处理程序(期望用户将在加载此应用程序模型时加载)。 post_migrate和pre_migrate仅在migrate命令上运行。将代码添加到settings.py中似乎很奇怪,此外无论如何都没有加载任何东西。到目前为止,唯一有效的方法是将它连接到pre_init信号,并在每次生成User实例时运行它。但这似乎是一种资源消耗。我正在使用Django 1.8。如何在每个应用程序加载时运行此命令?

1 个答案:

答案 0 :(得分:1)

我同意这些意见;有比这更漂亮的方法。

您可以将代码添加到应用的__init__.py