Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dj-kaos-utils / drf / serializers.py
Size: Mime:
from django.core.exceptions import ObjectDoesNotExist
from rest_framework import serializers

from kaos_utils.models.utils import infuse_instance


class CreatableSlugRelatedField(serializers.SlugRelatedField):
    def to_internal_value(self, data):
        try:
            return self.get_queryset().get(**{self.slug_field: data})
        except ObjectDoesNotExist:
            return self.get_queryset().create(**{self.slug_field: data})
        except (TypeError, ValueError):
            self.fail('invalid')


class RunModelCleanSerializer(serializers.ModelSerializer):
    def validate(self, data):
        if self.instance:
            # TODO: it needs to run with instance infused with the new data
            infuse_instance(self.instance, data)
            self.instance.clean()
        else:
            self.Meta.model(**data).clean()
        return data