【问题标题】:django m2m_changed not workingdjango m2m_changed 不工作
【发布时间】:2018-04-05 15:03:35
【问题描述】:

我有简单的代码,错误不工作! 将标签添加到不称为tag_update_count_use的内容后@!

模型.py

class Tag(models.Model):
    count_use = models.PositiveIntegerField(_('count use'), default=0)

    def update_count_use(self, delta):
        self.count_use += delta
        self.save(update_fields=['count_use'])

class Content(models.Model):
    tags = models.ManyToManyField('Tag', blank=True, verbose_name=_('tags'))

信号.py

from django.db.models.signals import m2m_changed
from django.dispatch import receiver

@receiver(m2m_changed, sender=Content.tags)
def tag_update_count_use(sender, **kwargs):
    print(kwargs)
    return kwargs

__init__.py

default_app_config = 'content.apps.ContentConfig'

apps.py

class ContentConfig(AppConfig):
    name = 'content'
    verbose_name = _('content')

    def ready(self):
        import content.signals

根据https://docs.djangoproject.com/en/dev/ref/signals/#m2m-changed,我将代码更改为:

@receiver(m2m_changed, sender=Content.tags.though)

但我收到此错误:

AttributeError: 'ManyToManyDescriptor' object has no attribute 'though'

【问题讨论】:

  • 你错过了through中的r
  • 谢谢我有点累了!

标签: python django signals models


【解决方案1】:

您错过了through 中的r。试试:

@receiver(m2m_changed, sender=Content.tags.through)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 2011-09-21
    • 2018-11-10
    • 2015-07-09
    • 2011-08-30
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多