Как обновить значение поля в модели django объекта, принадлежащего классу, который наследуется от другого абстрактного класса?

class BaseModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

class PublicModel(models.Model):
    public_id = models.UUIDField(default=uuid.uuid4, editable=False, db_index=True, unique=True)

    class Meta:
        abstract = True

class People(BaseModel):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

class Address(BaseModel):
    postal_code = models.CharField(max_length=255, null=True)
    public_place = models.CharField(max_length=255, null=True)

class Contact(BaseModel):
    email = models.EmailField()
    phone = models.CharField(max_length=255, null=True)


class Member(BaseModel, PublicModel):
    name = models.CharField(max_length=255)
    person = models.OneToOneField(People, on_delete=models.PROTECT)

    class Meta:
        abstract = True


class Hub(BaseModel):
    description = models.CharField(max_length=255)
    address = models.ForeignKey(Address, on_delete=models.PROTECT)
    contact = models.OneToOneField(Contact, on_delete=models.PROTECT)


class Partner(Member):
    hub = models.ForeignKey(Hub, on_delete=models.PROTECT, null=True)

При обновлении объекта People или Hub я бы хотел, чтобы поле updated_at the Partner также обновляется, чтобы отражать текущее время модификации. В существующем виде при обновлении объекта People или Hub только его поле updated_at имеет обновленное время.

Какой лучший подход для этого?

На данный момент я обновляю объект таким образом, который я считаю очень плохим. Принудительное обновление объекта Partner путем передачи значения public_id чтобы updated_at имел обновленное значение.

Partner.objects.update_or_create(id=partner.id,
                                   defaults={'public_id': kwargs['public_id']})
Вернуться на верх