Soft Delete и ForeignKey агрегирование в Django
Я добавлял soft-delete в Django, но столкнулся с проблемой.
В следующем примере я хотел бы сделать мягкое удаление на ChildEntity
, Тем не менее, когда ParentEntity
только удалил ChildEntity
, целый ParentEntity
будет пропущен в запросе "исключить".
Что было бы правильным для аннотирования агрегации, но не фильтровать ParentEntity
, пожалуйста?
class ParentEntity(models.Model):
name = models.CharField()
class ChildEntity(models.Model):
deleted = models.BooleanField()
parent = models.ForeignKey(ParentEntity, related_name='children')
ParentEntity.objects.exclude(children__deleted=True).annotate(
children_count=models.Count('children'))
# In this collection, ParentEntity that only has deleted ChildEntity is gone :(