所有。 我在我的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字段,它只是空的。
我哪里出错了?