无法编辑模型字段/Django信号以更新图像,因为这样做不起作用/
我用m2mchanged接收器实现了一个信号,以更新图像模型中的正整数域。这个正整数域是用于图像的total_likes,但在实现该信号后,我意识到total_likes域没有从零变为零。我开始试验,发现即使在shell或管理页面中更改该值,该值也不会更改 我不认为这是信号/接收器的问题,而是发生了其他一些不会让数据库中的值发生变化的事情 这是我的密码 models.py 如果需要,我可以发布signals.py文件或任何其他代码。 谢谢大家! 解决方案 我的问题是在我重写的save方法中,我将其更改为以下内容无法编辑模型字段/Django信号以更新图像,因为这样做不起作用/,django,database,signals,Django,Database,Signals,我用m2mchanged接收器实现了一个信号,以更新图像模型中的正整数域。这个正整数域是用于图像的total_likes,但在实现该信号后,我意识到total_likes域没有从零变为零。我开始试验,发现即使在shell或管理页面中更改该值,该值也不会更改 我不认为这是信号/接收器的问题,而是发生了其他一些不会让数据库中的值发生变化的事情 这是我的密码 models.py 如果需要,我可以发布signals.py文件或任何其他代码。 谢谢大家! 解决方案 我的问题是在我重写的save方法中,我将
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Image, self).save(*args, *kwargs)
elif self.slug != slugify(self.title):
self.slug = slugify(self.title)
super(Image, self).save(*args, *kwargs)
else:
super(Image, self).save(*args, *kwargs)
正确且简单的解决方案如下:
def save(self, *args, **kwargs):
if not self.id: # don't allow to change slug after object created
self.slug = slugify(self.title)
super(Image, self).save(*args, **kwargs)
甚至更好。谢谢,你建议不要在创建对象后更改slug吗?因为它是唯一的标识,比如“id”,所以你不应该更改它。如果您想更改它,只需将“if not self.id”替换为“if not self.slug”。
def save(self, *args, **kwargs):
if not self.id: # don't allow to change slug after object created
self.slug = slugify(self.title)
super(Image, self).save(*args, **kwargs)