>>> import datetime, pytils.dt
>>> today = datetime.datetime.now()
>>> once_upon_a_time = today - datetime.timedelta(days=666) - datetime.timedelta(seconds=666)
>>> today, once_upon_a_time
(datetime.datetime(2012, 4, 4, 15, 17, 44, 265655), datetime.datetime(2010, 6, 8, 15, 6, 38, 265655))
>>> print pytils.dt.distance_of_time_in_words(from_time=once_upon_a_time, to_time=today, accuracy=3)
666 дней 0 часов 11 минут назад
def distance_of_time_in_words(from_time, accuracy=1, to_time=None):
...
class A(models.Model):
'some stuff'
class B(models.Model):
ptr = models.OneToOneField(A)
def pre_delete(sender, **kwargs):
instance = kwargs['instance']
# По идее, B является подклассом A, поэтому этот сигнал сработает и при удалении модели B.
# Нам этого не нужно
if type(instance) is B:
return
# Предварительное удаление детей
B.objects.filter(ptr_id=instance.pk).delete()