Мягкое удаление для многих ко многим не работает в Django

У нас есть реализация мягкого удаления, когда мы делаем мягкое удаление для каждой записи, но это не работает для отношений Many to Many. Ниже приведен код для реализации мягкого удаления

class SoftDeletionQuerySet(models.QuerySet):
    def delete(self, **kwargs):
        defaults = {"deleted_at": time.now()}
        args = {**defaults, **kwargs}
        return super().update(**args)
        
class SoftDeletionManager(models.Manager):
    def get_queryset(self):
       return SoftDeletionQuerySet(self.model).filter(deleted_at=None)

class SoftDeletionModel(models.Model):
    deleted_at = models.DateTimeField(null=True, blank=True)

    objects = SoftDeletionManager()

    class Meta:
        abstract = True

class A(SoftDeletionModel):
    name = models.CharField(max_length=128, default="")
    things = models.ManyToManyField("B", through="ThroughModel")

class B(SoftDeletionModel):
    text = models.TextField()

class ThroughModel(SoftDeletionModel):
    a = models.ForeignKey(A)
    b = models.ForeignKey(B)
    extra = models.BooleanField()
a = A.objects.filter(name="xyz").first()
a.things.all() 

Это позволяет получить удаленную запись, которая присутствует в ThroughModel, но отсутствует в модели B. В идеале я хочу получить все записи для модели B, которые не помечены удаленными в ThroughModel. Я пытался переопределить ThroughModel queryset, но это, похоже, не работает

Вернуться на верх