【发布时间】:2022-01-04 16:54:37
【问题描述】:
我有一个 celery 任务,它会定期运行并为所有使用某种会计服务的公司获取一些数据。我现在需要通过单击按钮使该任务按需运行,并且只获取当前公司的数据。
修改后的芹菜任务:
@APP.task
def import_data_for_company(company_id):
for integration in settings.INTEGRATIONS:
if integration["owner"]["company_id"] == company_id:
print("omlette du fromage")
Django 模板中的当前按钮
{% for integration in settings.INTEGRATIONS %}
{% if company.company_id == integration.owner.company_id %}
<div class="button">
<a class="btn" href="#">Import Data</a>
</div>
{% endif %}
{% endfor %}
我需要从 Django 模板触发该任务,并在执行此操作时将公司 ID 作为参数传递。但根据this 的评论,我无法从 Django 模板传递参数。在这里编写自定义模板标签/过滤器似乎没有帮助。
通过此按钮调用该函数有哪些选择?
必须注意,我对此仍然很陌生。
【问题讨论】:
-
为什么你在模板和芹菜任务中使用相同的循环似乎是多余的
-
是的,看起来不太好。 INTEGRATIONS 是一个字典列表,所以我必须遍历它们,以 1)获取正确的公司规格(任务)和 2)检查当前公司是否列在 INTEGRATIONS 中,然后才显示按钮。您对此有更好的建议吗?