小编nac*_*pro的帖子

Django Signals:如何初始化绑定?

我正在__init__.pyApp 的文件中导入信号文件.当我运行manage.py runserver时发生问题我发现__init__.py导入了两次,我的回调运行了两次.

但是,当我运行manage.py shell时,__init__.py它按预期工作(一次)

(Django 1.8.3)

app/__init__.py:

print 'Hello!'
import signals
Run Code Online (Sandbox Code Playgroud)

应用程序/ models.py:

from django.db import models

class RemoteTask(models.Model):
    title = models.CharField(max_length=50)

class RemoteTaskStatus(models.Model):
    remote_task = models.IntegerField()
    status = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

应用程序/ signals.py:

print '------> app/signals.py'

from django.db.models.signals import post_save
from django.dispatch import receiver
from app.models import RemoteTask, RemoteTaskStatus

@receiver(post_save, sender=RemoteTask)
def status_new(sender, **kwargs):
    print '---------> Running callback'
    if kwargs.get('created', 'False') is True:
        instance = kwargs['instance']
        RemoteTaskStatus.objects.create(
            remote_task=instance,
            status=0
        )
Run Code Online (Sandbox Code Playgroud)

示例输出:

$ ./manage.py …
Run Code Online (Sandbox Code Playgroud)

python django

1
推荐指数
1
解决办法
1405
查看次数

标签 统计

django ×1

python ×1