From 48f0ffe81e05bf9926a7e0d97215aead90e8d68c Mon Sep 17 00:00:00 2001 From: qzibet Date: Mon, 12 Jun 2023 11:42:54 +0600 Subject: [PATCH] add modification for many-to-many fields with though argument in `update_or_create_reverse_relations` method --- drf_writable_nested/mixins.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drf_writable_nested/mixins.py b/drf_writable_nested/mixins.py index 6985de3..4c6678f 100644 --- a/drf_writable_nested/mixins.py +++ b/drf_writable_nested/mixins.py @@ -170,6 +170,8 @@ def update_or_create_reverse_relations(self, instance, reverse_relations): ) elif not related_field.many_to_many: save_kwargs[related_field.name] = instance + elif related_field.many_to_many and related_field.remote_field.through: + save_kwargs['parent_instance'] = instance new_related_instances = [] errors = [] @@ -209,6 +211,7 @@ def update_or_create_direct_relations(self, attrs, relations): for field_name, (field, field_source) in relations.items(): obj = None data = self.get_initial()[field_name] + model_class = field.Meta.model pk = self._get_related_pk(data, model_class) if pk: @@ -217,7 +220,7 @@ def update_or_create_direct_relations(self, attrs, relations): ).first() else: if getattr(field, 'only_assignation_allowed', False): - return + continue serializer = self._get_serializer_for_field( field, instance=obj,