所以我有一个模型,我需要覆盖保存属性来检查多对多关系是否已更改。通常,对于 char 字段,您可以执行如下操作,但对于多对多,它的工作方式有所不同。
class Interest(TimestampedModel):
subjects = models.ManyToManyField('genre.Subject', blank=True)
def save(self, *args, **kwargs):
if self.id:
old_subjects = Interest.objects.filter(pk=self.pk).first().subjects.all()
subjects = self.subjects.all()
if subjects != old_subjects:
# Do stuff
知道如何为多对多领域制作这样的东西吗?
信号怎么样?请在
此处查看
m2m_changed
信号文档。
您可以像这样使用它:
from django.db.models.signals import m2m_changed
from django.dispatch import receiver
@receiver(m2m_changed, sender=Interest.subjects.through)
def video_category_changed(sender, instance, **kwargs):
# do stuff to the Interest instance:
instance...