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 :(

0 ответов

Другие вопросы по тегам