Django при создании поста для внешнего ключа возникает ошибка 'Direct assignment to the reverse side of related set is prohibited'.

У меня есть модель Protein, которая связана с моделью Domain через внешний ключ proteins в модели Domain.

class Protein(models.Model):
     protein_id = models.CharField(max_length=256, null=False, blank=False)
     sequence = models.CharField(max_length=256, null=True, blank=True)
     length = models.IntegerField(null=False, blank=False)
     taxonomy = models.ForeignKey(Organism, blank=True, null=True, on_delete=models.DO_NOTHING)

     def __str__(self):
         return self.protein_id

class Domain(models.Model):
     domain_id = models.CharField(max_length=256, null=False, blank=False)
     description = models.CharField(max_length=256, null=False, blank=False)
     start = models.IntegerField(null=False, blank=False)
     stop = models.IntegerField(null=False, blank=False)
     proteins = models.ForeignKey(Protein, blank=True, null=True, related_name="domains", on_delete=models.DO_NOTHING)

     def __str__(self):
         return self.domain_id

Я хочу разместить новую запись о белке с помощью сериализатора Protein. Сериализатор Protein отображает данные из Домена в поле domains.

class ProteinSerializer(serializers.ModelSerializer):
    domains = DomainSerializer(many=True)
    taxonomy = OrganismSerializer()

    class Meta:
        model = Protein
        fields = [
                'protein_id',
                'sequence',
                'taxonomy',
                'length',
                'domains',
                ]

Я сделал функцию create в сериализаторе Protein для создания двух внешних ключей при постинге новой записи. Однако при создании внешнего ключа для domains я получаю ошибку TypeError: Direct assignment to the reverse side of a related set is prohibited. Use domains.set() instead. Я пробовал использовать domains.set() для моего списка доменов, но это все равно дает мне ту же ошибку

def create(self, validated_data):
        taxonomy_data = self.initial_data.get('taxonomy')
        domains_data = self.initial_data.get('domains')

        domains_list = []

        for i in range(len(domains_data)):
            domains_list.append(Domain.objects.filter(domain_id=domains_data[i]['domain_id']))

        protein = Protein(**{**validated_data,
                            'taxonomy': Organism.objects.filter(taxa_id=taxonomy_data['taxa_id']).first()
                            })

        protein.domains.set(domains_list)
        protein.save()
        return protein
Вернуться на верх