我有两个应用程序,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
我正在尝试使用m2m_changed Signal在新事件添加到给定Channel实例时执行某些操作。
问题在于,当它被添加到Channel的实例时,我无法找到知道事件id的方法。 我检查了文档: - https://docs.djangoproject.com/en/dev/ref/signals/
有pk_set。但问题是,当我向Channel的给定实例添加新事件时,它也会显示先前添加的事件的ID。我只是想知道最新添加事件的ID。
这怎么可能? 希望我的问题很明确...... 在此先感谢:)
答案 0 :(得分:3)
以下对我有用......
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 )