Set pk_field from target_field in ModelSerializer

This commit is contained in:
Ryan Thomson 2022-12-11 16:06:20 -05:00
parent 601ef120c5
commit 1393573718
No known key found for this signature in database
GPG Key ID: 6D19CE34E3282000
2 changed files with 6 additions and 0 deletions

View File

@ -1296,6 +1296,10 @@ class ModelSerializer(Serializer):
field_kwargs['slug_field'] = to_field
field_class = self.serializer_related_to_field
# `pk_field` is only valid for PrimaryKeyRelatedField
if not issubclass(field_class, PrimaryKeyRelatedField):
field_kwargs.pop('pk_field', None)
# `view_name` is only valid for hyperlinked relationships.
if not issubclass(field_class, HyperlinkedRelatedField):
field_kwargs.pop('view_name', None)

View File

@ -265,6 +265,8 @@ def get_relation_kwargs(field_name, relation_info):
kwargs.pop('queryset', None)
if model_field.null:
kwargs['allow_null'] = True
if isinstance(model_field.target_field, models.UUIDField):
kwargs['pk_field'] = models.UUIDField()
if kwargs.get('read_only', False):
# If this field is read-only, then return early.
# No further keyword arguments are valid.