【发布时间】:2022-01-10 18:43:50
【问题描述】:
现在我正在尝试借助 post_save 信号更新模型中的字段。在管理页面中一切正常,但只有在我第二次单击保存按钮后,“number_of_photos”字段才会更新。为什么会这样?
信号代码:
@receiver(post_save, sender=PhotoAlbum) # noqa
def count_photos(sender, created, instance, *args, **kwargs): # noqa
instance.number_of_photos = instance.photos.count()
signals.post_save.disconnect(count_photos, sender=PhotoAlbum)
instance.save()
signals.post_save.connect(count_photos, sender=PhotoAlbum)
型号:
class PhotoAlbum(models.Model):
title = models.CharField(verbose_name='Название альбома', max_length=50, null=True)
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, verbose_name='Автор')
created_at = models.DateTimeField(verbose_name='Дата создания', editable=False,
default=datetime.datetime.today())
photos = models.ManyToManyField('Photo', verbose_name='Фото', blank=True, related_name='photo_albums')
number_of_photos = models.PositiveIntegerField(verbose_name='Количество фото', null=True, editable=False)
class Meta:
verbose_name = 'Фотоальбом'
verbose_name_plural = 'Фотоальбомы'
【问题讨论】:
标签: django django-models