Django создает пост с внешним ключом обратной связи

У меня есть модель 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, который отображает Queryset следующим образом:

domains = DomainSerializer(many=True)
taxonomy = OrganismSerializer()
class Meta:
    model = Protein
    fields = [
            'protein_id',
            'sequence',
            'taxonomy',
            'length',
            'domains',
            ]

Проблема возникает, когда мне нужно создать новую запись Protein с помощью сериализатора Protein. Я пишу функцию post API для создания новой записи, но она выдает ошибки при попытке создать поля внешнего ключа.

@api_view(['POST'])
def protein(request):
    if request.method == 'POST':
        serializer = ProteinSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Я добавил следующую функцию в свой сериализатор Protein, чтобы переопределить функцию создания для двух внешних ключей, но она, похоже, не работает при попытке создания для отношения domains. Она сообщает мне, что я могу использовать только целые числа для индекса domain_data вместо того, чтобы использовать domain_id для индекса, но она прекрасно работает для данных таксономии

TypeError: индексы списка должны быть целыми числами или срезами, а не str

def create(self, validated_data):
    taxonomy_data = self.initial_data.get('taxonomy')
    domains_data = self.initial_data.get('domains')
    protein = Protein(**{**validated_data,
                        'taxonomy': Organism.objects.filter(taxa_id=taxonomy_data['taxa_id']),
                        'domains': Domain.objects.filter(domain_id=domains_data['domain_id'])
                        })
    protein.save()
    return protein 

Это связано с тем, что внешний ключ домена не существует в модели Protein или это неправильный способ выполнения функции создания? Кто-нибудь может дать совет по этому поводу?

Вернуться на верх