Skip to content

Instantly share code, notes, and snippets.

@akkuman
Created November 5, 2020 02:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akkuman/6b8fa08da56c9c804153aab0a7179b82 to your computer and use it in GitHub Desktop.
Save akkuman/6b8fa08da56c9c804153aab0a7179b82 to your computer and use it in GitHub Desktop.
树状表适用的model serializer(不检查外键存在与否,不存在的外键自动置为0)
class PrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField):
"""主要是为了避免当外键为0这种情况的发生,比如树状表"""
def to_internal_value(self, data):
if self.pk_field is not None:
data = self.pk_field.to_internal_value(data)
try:
return self.get_queryset().get(pk=data)
except ObjectDoesNotExist:
return self.get_queryset().model(pk=0)
except (TypeError, ValueError):
self.fail('incorrect_type', data_type=type(data).__name__)
class MyModelSerializer(serializers.ModelSerializer):
"""树状表适用的model serializer(不检查外键存在与否)"""
serializer_related_field = PrimaryKeyRelatedField
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment