diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 33f4feb09105b880a229603e29c5ebdbd4593386..639e408cef026e3487a6c47e5279da97b05c5b48 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -1,5 +1,4 @@ import json -import pdb from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import get_resolver @@ -19,7 +18,7 @@ class LDListMixin: data = data['ldp:contains'] if isinstance(data, dict): data = [data] - return [self.child.to_internal_value(item['@id']) for item in data] + return [self.child.to_internal_value(item) for item in data] def to_representation(self, value): return {'@id': self.id, 'ldp:contains': super().to_representation(value)} @@ -43,6 +42,12 @@ class ContainerSerializer(LDListMixin, ListSerializer): print(validated_data) return super().create(validated_data) + def to_internal_value(self, data): + try: + return super().to_internal_value(data['@id']) + except: + return super().to_internal_value(data) + class ManyJsonLdRelatedField(LDListMixin, ManyRelatedField): @@ -126,7 +131,7 @@ class LDPSerializer(HyperlinkedModelSerializer): fields = '__all__' def to_internal_value(self, data): - return JsonLdRelatedField(view_name="skill-detail",queryset=Skill.objects.all()).to_internal_value(data) + return JsonLdRelatedField(view_name="skill-detail", queryset=Skill.objects.all()).to_internal_value(data) # super().to_internal_value(data)] kwargs = get_nested_relation_kwargs(relation_info) @@ -134,14 +139,17 @@ class LDPSerializer(HyperlinkedModelSerializer): return NestedLDPSerializer, kwargs # return NestedLDPSerializer, {"many": True} - - @classmethod def many_init(cls, *args, **kwargs): kwargs['child'] = cls() return ContainerSerializer(*args, **kwargs) - def create(self, validated_data): - self.Meta.model.objects.create(**validated_data) + skills = validated_data.pop('skills') + job_offer = self.Meta.model.objects.create(**validated_data) + + for skill in skills: + skill.save() + job_offer.skills.add(skill) + return job_offer diff --git a/djangoldp/tests/tests.py b/djangoldp/tests/tests.py index cc0310142130b5c4b0ad0f7f0b25866f65bb5455..e101f69a36bac39b7db24b3c8339514d821d5362 100644 --- a/djangoldp/tests/tests.py +++ b/djangoldp/tests/tests.py @@ -14,7 +14,6 @@ class Serializer(TestCase): "ldp:contains": [ {"@id": "https://happy-dev.fr/skills/{}/".format(skill1.pk)}, {"@id": "https://happy-dev.fr/skills/{}/".format(skill2.pk)}, - ]} }