Как обновить значение поля в модели 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']})