Django: перезапись модели метода абстрактной модели изнутри наследуемых моделей
У меня проблема с переназначением некоторых var в моей модели, у меня есть такая модель:
class ExpireTime(models.Model):
"""Expire time fields and methods in abstract mode"""
def expire_time():
return create_expire_time(seconds=10)
expire = models.DateTimeField(default=expire_time)
def is_expired(self) -> bool:
return self.expire < timezone.now()
class Meta:
abstract = True
но в различных моделях, которые использовали эту абстрактную модель, мне нужно использовать различные сроки действия в exprie_time:
def expire_time():
return create_expire_time(seconds=10)
поэтому я пытаюсь перезаписать этот метод в модели, унаследованной от ExpireTime, но это не дает никакого эффекта.
Итак, как я могу решить эту ситуацию? Должен ли я не использовать абстрактную модель в этой ситуации?
Вы всегда можете сделать это при сохранении:
class ExpireTime(models.Model):
default_expired = 10
expire = models.DateTimeField(null=True, blank=true)
class Meta:
abstract = True
def save(self, *args, **kwargs):
if not self.expire:
self.expire = create_expire_time(seconds=self.default_expired)
super().save(*args, **kwargs)
class OtherExpireTime(ExpireTime):
default_expired = 20