diff --git a/program/serializers.py b/program/serializers.py index 1c3d2d830ace10a1961eadd9e9f7d960ef5fb59a..c4006ef51c500edc563a0dd8cb78ae3450882577 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -296,6 +296,9 @@ class HostSerializer(serializers.ModelSerializer): allow_null=True, queryset=Image.objects.all(), required=False, source="image" ) links = HostLinkSerializer(many=True, required=False) + owner_ids = serializers.PrimaryKeyRelatedField( + allow_null=True, many=True, queryset=User.objects.all(), source="owners" + ) class Meta: model = Host @@ -313,6 +316,7 @@ class HostSerializer(serializers.ModelSerializer): "is_active", "links", "name", + "owner_ids", ) + read_only_fields def create(self, validated_data): @@ -321,7 +325,7 @@ class HostSerializer(serializers.ModelSerializer): """ links_data = validated_data.pop("links", []) - + owners = validated_data.pop("owners", []) validated_data["image"] = validated_data.pop("image_id", None) host = Host.objects.create( @@ -331,6 +335,8 @@ class HostSerializer(serializers.ModelSerializer): for link_data in links_data: HostLink.objects.create(host=host, **link_data) + host.owners.set(owners) + host.save() return host @@ -352,6 +358,8 @@ class HostSerializer(serializers.ModelSerializer): for link_data in links_data: HostLink.objects.create(host=instance, **link_data) + instance.owners.set(validated_data.get("owners", instance.owners)) + instance.updated_by = self.context.get("request").user.username instance.save()