在Django REST Framework中重写'create'方法。设置ManyToMany字段

时间:2016-03-24 06:07:10

标签: python django django-rest-framework

所有。 我在我的ModelSerializer中覆盖的'create'方法存在一些问题。顺便说一句,我的模特:

class User(AbstractEmailUser):
    target_languages = models.ManyToManyField(Language, default='en', related_name="target_language")
    biography = models.TextField(null=True, blank=True)
    location = models.CharField(max_length=2, null=True)
    objects = UserManager()

我的序列化器:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        exclude = ['password', 'groups', 'user_permissions', 'is_superuser',
               'is_staff']
        read_only_fields = ['date_joined', 'last_login']

    def create(self, validated_data):
        target_languages = validated_data.pop('target_languages')
        user = User.objects.create(**validated_data)
        for target_language in target_languages:
            user.target_languages.add(get_object_or_404(Language, iso_639_1=target_language))
        user.save()
        return user

主要问题是当我尝试使用target_languages字段(例如target_languages": ["en", "es"])向此序列化程序发送POST时,它没有设置ManyToMany字段,它只是空的。

我哪里出错了?

0 个答案:

没有答案
相关问题