diff --git a/CHANGES/7835.bugfix b/CHANGES/7835.bugfix new file mode 100644 index 0000000000..cf4b9cb85b --- /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 8eac0ebfc9..9d5538a4ae 100644 --- a/pulpcore/app/serializers/base.py +++ b/pulpcore/app/serializers/base.py @@ -67,6 +67,16 @@ def _patched_reverse(viewname, request=None, args=None, kwargs=None, **extra): class HrefPrnFieldMixin: """A mixin to configure related fields to generate relative hrefs and accept PRNs.""" + 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): # Use the Pulp reverse method to display relative hrefs. self.reverse = _reverse(obj)