Filter nested models by grandchild, return nested structure

I have the following models, with Iteration related to Version, and Version related to Regulation. I would like to return all iterations owned by the current user, but return them in a nested structure like so:

[data: [{ name: "sample regulation 1",
          versions: [{ name: "sample version 1"
                       iterations:[ { name: "first Iteration",
                                      id: "uuid here"
                                     },
                                     { name: "second Iteration"
                                       id: "uuid here"
                                     }]
                      },
                      { name: "sample version 2"
                      ...
                      }]
       },
       { name: "sample regulation 2"
        ...
       }]

I know how to fetch all the iterations in a nested structure but not filter them by user (using nested serializers), and I know how to pre-fetch and filter all the iterations by user, but not nest them. Here is my best attempt. My attempt below doesn't work because I don't know how to filter by 'grandchild' model, only by child model.

    queryset = Regulation.objects.filter(iterations=request.user.organization_id)

Here are my models:

class Regulation(models.Model):
  id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
  name = models.TextField(null=False)
  documents = models.ManyToManyField(Document, related_name='regulation_documents', through="DocumentRegulation")
  portal = models.BooleanField(default=False)

class Version(models.Model):
  id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
  regulation = models.ForeignKey(Regulation, related_name='versions', blank=False, null=False, on_delete=models.DO_NOTHING)
  name = models.CharField(max_length=20, null=False)

class Iteration(models.Model):
  id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
  regulation = models.ForeignKey(Regulation, blank=False, on_delete=models.DO_NOTHING)
  version = models.ForeignKey(Version, related_name='iterations', blank=False, on_delete=models.DO_NOTHING)
  name = models.CharField(max_length=60, blank=False, null=False)
  date_created = models.DateTimeField(_('created at'), auto_now_add=True)
  user = models.ForeignKey(User, blank=False, null=False, on_delete=models.DO_NOTHING)

class Meta:
    unique_together= ('name', 'user', 'version')

with the following serializers:

class IterationSerializer(serializers.ModelSerializer):

  class Meta:
    model = RequirementIteration
    fields = ('id', 'regulation', 'user', 'version', 'name', 'date_created')

class VersionSerializer(serializers.ModelSerializer):
  iterations = IterationSerializer(many=True, read_only=True)
  class Meta:
    model = RegulationVersion
    fields = ('name', 'iterations')

 class RegulationSerializer(serializers.ModelSerializer):
   versions = VersionSerializer(many=True, read_only=True)
   class Meta:
     model = Regulation
     fields = ('name', 'versions')
     depth = 2

Thanks for any guidance!