And you can pull image for desired platform anywhere, but it tries to download exactly the same layers for not matter of platform

$ docker pull --platform linux/arm64 containers.intersystems.com/intersystems/iris-community:2022.3.0.545.0
2022.3.0.545.0: Pulling from intersystems/iris-community
405f018f9d1d: Already exists
2cbbd12e515b: Pulling fs layer
fe60bfd0c5ab: Pulling fs layer
4ea6673a83ee: Downloading [>                                                  ]  35.91kB/3.369MB
c51907c154c9: Waiting
9a2e0e6b825d: Waiting

$ docker pull --platform linux/amd64 containers.intersystems.com/intersystems/iris-community:2022.3.0.545.0
2022.3.0.545.0: Pulling from intersystems/iris-community
405f018f9d1d: Already exists
2cbbd12e515b: Pulling fs layer
fe60bfd0c5ab: Pulling fs layer
4ea6673a83ee: Pulling fs layer
c51907c154c9: Waiting
9a2e0e6b825d: Waiting

And with arm64 URL, as expected new layers

$ docker pull containers.intersystems.com/intersystems/iris-community-arm64:2022.3.0.545.0                       2022.3.0.545.0: Pulling from intersystems/iris-community-arm64
4a3049d340b7: Pulling fs layer
d37582f21e47: Pulling fs layer
7c3186685c0a: Pulling fs layer
9f6c8eb3bd1d: Waiting
95e5fce820f5: Waiting
789164791b8b: Waiting

That's because they still do not support it that way. Manifest for images "supposed" to support both platforms, returns only one bunch of layers

$ docker manifest inspect containers.intersystems.com/intersystems/iris-community:2022.3.0.545.0                                                               {
    "schemaVersion": 2,
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "config": {
        "mediaType": "application/vnd.docker.container.image.v1+json",
        "size": 13258,
        "digest": "sha256:09058e9a4d31a2ba75f0549f15f3b770e3da41b2909c713bf07795034a37c83b"
    },
    "layers": [
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 30423715,
            "digest": "sha256:405f018f9d1d0f351c196b841a7c7f226fb8ea448acd6339a9ed8741600275a2"
        },
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 277372845,
            "digest": "sha256:2cbbd12e515b4bff4242c44f77538debfef426759723d7fe6910d3b3953cad8c"
        },
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 435700999,
            "digest": "sha256:fe60bfd0c5abc79baa15ef5a2af58e8ff118cffcfefe4eebd94c319a7cf32d68"
        },
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 3369232,
            "digest": "sha256:4ea6673a83eec852f096d1ea2717cfda67b1048faa6ff91a45831dd151d64358"
        },
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 320,
            "digest": "sha256:c51907c154c959f056e0511665961ac2356ff7f828324024f8cd3ad2ed7463cf"
        },
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 475828,
            "digest": "sha256:9a2e0e6b825d6abeb9ff888a483fe0935d32a4a61923eb466eb2baaccff49896"
        }
    ]
}

While it's expected to be this way when it explicitly mentions both supported platforms

$ docker manifest inspect intersystemsdc/iris-community:preview
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2421,
         "digest": "sha256:5bccfba5c1b9877635ac3e1108ed99070c9ba0c7fdd39db32d08d84f367035ca",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2421,
         "digest": "sha256:05f1b866524d0183f3cb6d3830b7b50a601a199a6e8f56e398d04e3226d1c349",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      }
   ]
}

Implemented it this way, as a workaround. But not sure in it.

    def visit_delete(self, delete_stmt, **kw):
        if not delete_stmt._where_criteria and delete_stmt.table.foreign_keys:
            table = delete_stmt.table
            nocheck = False
            for fk in table.foreign_keys:
                nocheck = not fk.ondelete and fk.parent.table == table
                if not nocheck:
                    break

            if nocheck is True:
                delete_stmt = delete_stmt.prefix_with('%NOCHECK', dialect='iris')
        text = super().visit_delete(delete_stmt, **kw)
        return text