【问题标题】:m2m_changed Signal in djangodjango 中的 m2m_changed 信号
【发布时间】:2013-09-05 09:09:23
【问题描述】:

我有两个应用程序,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。

这怎么可能? 希望我的问题很清楚... 在此先感谢:)

【问题讨论】:

    标签: django django-models django-signals


    【解决方案1】:

    以下对我有用...

    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 )
    

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 2018-11-10
      • 2020-07-15
      • 2019-10-17
      • 2012-09-23
      • 1970-01-01
      • 2013-05-10
      • 2012-07-26
      • 1970-01-01
      相关资源
      最近更新 更多