diff --git a/CHANGES/7835.bugfix b/CHANGES/7835.bugfix new file mode 100644 index 00000000000..cf4b9cb85bd --- /dev/null +++ b/CHANGES/7835.bugfix @@ -0,0 +1 @@ +Fixed `RelatedField` rendering wrong domain in hrefs when `DOMAIN_ENABLED=True`. diff --git a/pulpcore/app/serializers/base.py b/pulpcore/app/serializers/base.py index 1e8def7d512..c23685cceb8 100644 --- a/pulpcore/app/serializers/base.py +++ b/pulpcore/app/serializers/base.py @@ -63,6 +63,16 @@ def _patched_reverse(viewname, args=None, kwargs=None, **extra): class HrefFieldMixin: """A mixin to configure related fields to generate relative hrefs.""" + def use_pk_only_optimization(self): + """Disable DRF's PK-only optimization when domains are enabled. + + DRF's optimization passes a PKOnlyObject (no pulp_domain) to get_url, + causing _reverse to fall back to the default domain. + """ + if settings.DOMAIN_ENABLED: + return False + return super().use_pk_only_optimization() + def get_url(self, obj, view_name, request, *args, **kwargs): # Removes the request from the arguments to display relative hrefs. self.reverse = _reverse(self.reverse, request, obj)