2016-07-24 4 views
0

に私たちはモデルを持っています。 これを行うにはどのような提案がありますか? items_redモデルインスタンスは変更されません。その後、受信機は、Djangoの信号は、メソッド呼び出し(モデルインスタンスをトリガしない)

import django.dispatch 

items_red_executed = django.dispatch.Signal() 

class Item(model.Model): 
    pass 

    def items_red(self): 
     # filter items by red color 
     # model instance is NOT changed (saved) 
     items_red_executed.send(sender=self.__class__) 

::カスタム信号を定義する必要が

答えて

3

詳細については

from django.dispatch.dispatcher import receiver 

@receiver(items_red_executed, sender=Item) 
def my_receiver(**kwargs): 
    print(kwargs.get('sender')) 

documentationを参照してください。

+0

説明のために、私は信号をたくさん使っていません。しかし、今私は少しオーバーヘッドを理解し、単に追加のメソッドを作成し、 'items_red'でトリガするでしょう –

+0

私はあなたがそのオーバーヘッドについて心配する必要はないと思っています。DB駆動アプリケーションでは、 DBのパフォーマンス。 – rafalmp

+0

しかし、コードは可能な限り明示的に指定する必要があります。数ヶ月のコーディング後にプロジェクトをサポートしているときに役立ちます –

関連する問題