django m2m_changed 不工作
django m2m_changed not working
我有简单的代码,错误不起作用!
在向未称为 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'))
signals.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
。尝试:
@receiver(m2m_changed, sender=Content.tags.through)
我有简单的代码,错误不起作用!
在向未称为 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'))
signals.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
。尝试:
@receiver(m2m_changed, sender=Content.tags.through)