2

AとBの2つのアプリがあります

A の models.py は次のとおりです。

class Channel(models.Model):
    user = models.ForeignKey(User,unique=True)
    name = models.CharField(max_length=100)
    events = models.ManyToManyField(Event,null=True,blank=True)

    def __unicode__(self):
        return self.name

B の models.py は次のとおりです。

class Event(models.Model):
    name = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name

特定の Channel インスタンスに新しいイベントが追加されるたびに、m2m_changed Signal を使用して何かを実行しようとしています。

問題は、Channel のインスタンスにイベントが追加されたときに、イベントの ID を知る方法が見つからないことです。ドキュメントを確認しました:- https://docs.djangoproject.com/en/dev/ref/signals/

pk_set があります。しかし、問題は、チャネルの特定のインスタンスに新しいイベントを追加すると、以前に追加されたイベントの ID も表示されることです。最近追加されたイベントのIDを知りたいだけです。

これはどのように可能ですか?私の質問が明確であることを願っています...事前に感謝します:)

4

1 に答える 1

4

以下は私のために働いた...

def event_handler(sender, instance, **kwargs):
    if kwargs['action'] == "post_add" and kwargs["model"] == Event:
        # instance.events.latest('pk') is the latest event

m2m_changed.connect( event_handler, sender= Channel.events.through )
于 2013-09-04T09:49:51.553 に答える