Created
November 5, 2020 02:30
-
-
Save akkuman/6b8fa08da56c9c804153aab0a7179b82 to your computer and use it in GitHub Desktop.
树状表适用的model serializer(不检查外键存在与否,不存在的外键自动置为0)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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