【问题标题】:How can I disable the Django Celery admin modules?如何禁用 Django Celery 管理模块?
【发布时间】:2012-05-21 06:23:24
【问题描述】:

我不需要 Django 管理员中的 celery 模块。有什么办法可以去掉吗?

【问题讨论】:

    标签: python django django-admin celery django-celery


    【解决方案1】:

    更具体地说,在INSTALLED_APPS 内的任何应用程序的admin.py 之后 'djcelery'

    from django.contrib import admin
    from djcelery.models import (
        TaskState, WorkerState, PeriodicTask, 
        IntervalSchedule, CrontabSchedule)
    
    admin.site.unregister(TaskState)
    admin.site.unregister(WorkerState)
    admin.site.unregister(IntervalSchedule)
    admin.site.unregister(CrontabSchedule)
    admin.site.unregister(PeriodicTask)
    

    【讨论】:

    • 我收到了 NotRegistered at /admin/ The model TaskState is not registered。但我仍然在管理员中看到它。
    • 我也有这个问题。这不再是一个合适的解决方案。
    • @goliney 我已经对照最新的 djcelery (3.1.1) 进行了检查,它可以工作。请确保unregister 代码在INSTALLED_APPSdjcelery 之后的任何应用程序的admin.py 文件中。否则Django会先执行我们的注销代码,然后遗憾地发现TaskState没有注册(因为它注册在djceleryadmin.py,还没有运行!)。
    • @mh00h 请看上面的评论,看看是不是问题。
    • 你必须先导入 djcelery.admin,伙计们。
    【解决方案2】:

    更新后的版本如下:

    from django_celery_beat.models import (
        IntervalSchedule,
        CrontabSchedule,
        SolarSchedule,
        ClockedSchedule,
        PeriodicTask,
    )
    
    admin.site.unregister(SolarSchedule)
    admin.site.unregister(ClockedSchedule)
    admin.site.unregister(PeriodicTask)
    admin.site.unregister(IntervalSchedule)
    admin.site.unregister(CrontabSchedule)
    

    您始终可以通过以下方式获取已注册模型的列表:

    admin.site._registry
    

    【讨论】:

      【解决方案3】:

      您可以简单地取消注册 celerys 模型,例如 admin.site.unregister(CeleryModelIdoNotWantInAdmin)

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-23
        • 2013-06-05
        相关资源
        最近更新 更多