Ich habe ein Signal mit einem m2mchanged-Empfänger implementiert, um ein PositivIntegerField in meinem Image-Modell zu aktualisieren. Dieses PositiveIntegerField ist für total_likes des Bildes, aber bei der Implementierung des Signals erkannte ich, dass sich das Feld total_likes nicht von Null änderte. Ich begann zu experimentieren und fand heraus, dass sich dieser Wert nicht ändert, selbst wenn ich ihn in der Shell oder der Admin-Seite selbst ändere.Bearbeiten von Modellfeldern/Django Signal zum Aktualisieren von Bildlikes funktioniert nicht/
Ich glaube nicht, dass dies ein Problem mit dem Signal/Empfänger ist, sondern etwas anderes geschieht, das den Wert in der Datenbank nicht verändern lässt.
Hier ist mein Code.
models.py
class Image(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='images_created')
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200,
blank=True)
url = models.URLField()
image = models.ImageField(upload_to='images/%Y/%m/%d')
description = models.TextField(blank=True)
created = models.DateField(auto_now_add=True, db_index=True)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Image, self).save(*args, *kwargs)
users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name='images_liked',
blank=True)
def get_absolute_url(self):
return reverse('images:detail', args=[self.id, self.slug])
tags = TaggableManager()
total_likes = models.PositiveIntegerField(db_index=True, default=0)
Ich kann die signals.py Dateien oder einen anderen Code bei Bedarf erstellen. Vielen Dank!
Lösung
war mein Problem mein speichern Methode überschrieben, ich habe es in die folgenden geändert.
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)
ich mein Problem –