【问题标题】:How to use django AppConfig.ready() [duplicate]如何使用 django AppConfig.ready() [重复]
【发布时间】:2020-04-01 03:52:42
【问题描述】:

我似乎无法让我的 AppConfig 下的准备好的函数工作。

这是我在 apps.py 中的代码:

from django.apps import AppConfig

from django.contrib.auth.models import User
from django.db.models.signals import post_save, post_delete
from django.db.models import Max, Count
from .models import Player, PlayerStats, TotalLevels

class BloxorsConfig(AppConfig):
    name = 'bloxors'

    def ready(self):
        MaxCurrentLevel = PlayerStats.objects.aggregate(max_levels=Max('level_no'))['max_levels']
        PlayerCount = Player.objects.aggregate(count_players=Count('player_name', distinct=True))['count_players']
        print(MaxCurrentLevel, PlayerCount)

我在文档中读到 ready() 每次都在manage.py runserver 的开头被调用,但是为什么什么也没发生。理想情况下,我期望它打印两个值 MaxCurrentLevel, PlayerCount

有人可以指出我做错了什么并帮助解决这个问题吗?

一如既往,非常感谢您的回答!

【问题讨论】:

  • 您是否将您的应用添加到INSTALLED_APPS
  • @PedramParsian 是的,我有!
  • ready 中尝试 print("Test") 进行调试,请查看它是否调用了该函数

标签: python django django-models


【解决方案1】:

好吧,这首先是我有点愚蠢,但我找到了答案,其他任何想要它的人,就在这里!

在 INSTALLED_APPS 下: 我已将我的应用程序安装为: 'bloxors'

但显然在文档中(经过大量挖掘),您需要将其实际指定为:

'bloxors.apps.BloxorsConfig'

给出的原因是,django 没有设置默认的 AppConfig,用户可以这样做,我不知道,所以你去吧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 2016-02-22
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多