Поле вложенного сериализатора DRF M2M, неправильно введенное в качестве строки - PullRequest
0 голосов
/ 28 мая 2018

Всякий раз, когда я пытаюсь десериализовать список объектов Technology при создании TechnologyStack, я получаю сообщение:

Поле \ "technologies \" типа \ "String \" не должно иметь подвыбор.

Я использую djangorestframework == 3.8.2.Кто-нибудь знает, что является причиной этого и / или потенциального решения?

Также обратите внимание, что я использую библиотеку graphene-django.Но, похоже, эта проблема связана с сериализатором drf.

class TechnologyProfile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100, unique=True)


class Technology(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    profile = models.ForeignKey(TechnologyProfile, blank=True, null=True, on_delete=models.CASCADE)

    class Meta:
        verbose_name_plural = "technologies"


class TechnologyStack(models.Model):
    technologies = models.ManyToManyField(Technology, related_name='technology_stacks')


class TechnologyProfileSerializer(serializers.ModelSerializer):
    user_id = RelayIdField()
    name = serializers.CharField()

    class Meta:
        model = TechnologyProfile
        fields = ('id', 'name', 'user_id')


class TechnologySerializer(serializers.ModelSerializer):
    user_id = RelayIdField()
    profile = TechnologyProfileSerializer(many=False)

    class Meta:
        model = Technology
        fields = '__all__'


class TechnologyStackSerializer(serializers.ModelSerializer):
    technologies = TechnologySerializer(many=True)

    class Meta:
        model = TechnologyStack
        read_only_fields = ('id',)
        fields = '__all__'
...