DRF M2M Nested Serializer Field Incorrectly Typed as String

Обновить

April 2019

Просмотры

47 раз

1

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

Поле \ «технологии \» типа \ «Строка \» не должны иметь выбор подменю.

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

Кроме того, обратите внимание, что я использую библиотеку графена Джанго. Но, кажется, эта проблема объясняется ФПИ сериализатором.

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__'

0 ответы