Alonso
Alonso

Reputation: 1

Django problem updating date field when updating a record

I have a problem when I try to update a field named date_updated. My intention with the field is that every time a record is updated, the date_updated field of that record should be updated by the date the change is made. That field and one other field I have inside a Base class and then in each of the models I inherit that class to repeat the fields.

class Base(models.Model):
    ...
    date_updated = models.DateTimeField(auto_now=True)

    def save(self, *args, **kwargs):
        self.date_updated = django.timezone.now()
        super(Base, self).save(*args, **kwargs)

    class Meta:
        abstract = True


class OtherClass(Base):
    ...

My intention is that when I update any record in the OtherClass, its date_updated field will be updated.

I also tried adding the overwrite of the save method in the OtherClass, but the result is the same. The date is kept after I make the change.

I am making the change with .update(**data_to_update)

Upvotes: 0

Views: 107

Answers (1)

n0cuous
n0cuous

Reputation: 72

I did this when i wanted to update only the updated_on (datetime) column: This might help you:

from datetime import datetime

def get_current_datetime_str():
    now = datetime.now()
    return now.strftime("%Y-%m-%d %H:%M:%S")
    
class ModelName(models.Model):
    date_updated=models.CharField(max_length=100) #whatever your field is
    ...
    def __str__(self):
        return self.name

continue and write this below def str(self):

def save(self, *args, **kwargs):
    self.date_updated = get_current_datetime_str()
    super().save(*args, **kwargs)

Upvotes: 0

Related Questions