2

我有两个应用程序,A 和 B

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 。但问题是,当我将新事件添加到给定的 Channel 实例时,它也会显示先前添加的事件的 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 回答