Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法编辑模型字段/Django信号以更新图像,因为这样做不起作用/_Django_Database_Signals - Fatal编程技术网

无法编辑模型字段/Django信号以更新图像,因为这样做不起作用/

无法编辑模型字段/Django信号以更新图像,因为这样做不起作用/,django,database,signals,Django,Database,Signals,我用m2mchanged接收器实现了一个信号,以更新图像模型中的正整数域。这个正整数域是用于图像的total_likes,但在实现该信号后,我意识到total_likes域没有从零变为零。我开始试验,发现即使在shell或管理页面中更改该值,该值也不会更改 我不认为这是信号/接收器的问题,而是发生了其他一些不会让数据库中的值发生变化的事情 这是我的密码 models.py 如果需要,我可以发布signals.py文件或任何其他代码。 谢谢大家! 解决方案 我的问题是在我重写的save方法中,我将

我用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)