1

follow()UserProfile で関数が呼び出されたときにシグナルを使用したい。他のモデル (保存時) で動作するシグナルを作成しました。

class UserProfile(UserenaBaseProfile):
  user = models.OneToOneField(User,unique=True,verbose_name=_('user'))
  location = models.CharField(_('Location'), max_length=255, blank=True, default='')
  following = models.ManyToManyField(User, verbose_name=_('following'), related_name='followers', blank=True, null=True)

  def follow(self, user):
    self.following.add(user)

  def unfollow(self, user):
    self.following.remove(user)

信号

def follow_action(sender, instance, created, action_object=None, **kwargs):
  action.send(instance.user, verb='follows', target=instance.content_object)
post_save.connect(follow_action, sender=UserProfile)

この信号は、UserProfileモデルが保存されたときに機能します。follow()関数の実行時にシグナルを呼び出したい。助けてくれますか?何か案が?どうもありがとう

アップデート:

def follows_action(sender, instance, created, action_object=None, **kwargs):
  action.send(instance.user, verb='follows', target=instance.content_object)
m2m_changed.connect(follows_action, sender=UserProfile.following.through)

それは動作しません。何か不足していますか?

4

1 に答える 1

2

多対多リレーションの変更にコールバックを接続するには、m2m_changed signalを使用します。

于 2012-05-15T17:23:45.047 に答える