0
我已經正確地定義了一切。 (GET工作正常)我可以通過嵌套序列化程序獲取用戶詳細信息。但是當我做PUT我沒有得到validation_data更新方法是在UserSerializer。Django Rest框架嵌套序列化程序不在validated_data中返回關係值
models.py
class UserProfile(models.Model):
user = models.ForeignKey(User, related_name='users',
on_delete=models.CASCADE)
phone_number = models.CharField(max_length=15)
known_languages = models.CharField(max_length=100)
date_updated = models.DateTimeField(auto_now=True)
user_domain = models.CharField(max_length=100, default=None)
serializers.py
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ['phone_number', 'known_languages', 'user_domain']
class UserSerializer(serializers.ModelSerializer):
users = UserProfileSerializer()
class Meta:
model = User
fields = ['first_name', 'last_name', 'username', 'email', 'users']
def update(self, instance, validated_data):
import pdb;pdb.set_trace()
#here I am not getting users value. it is returning empty list
return instance
views.py
def put(self, request, pk):
user_obj = self.get_object(pk)
request.POST._mutable = True
request.data['users'] = { 'phone_number': request.data.pop('phone_number'), 'user_domain': request.data.pop('user_domain'), 'known_languages': request.data.pop('known_languages') }
request.POST._mutable = False
serializer = UserSerializer(user_obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
它的任何一個幫助......
self.context在update方法中返回空字典。無論如何序列化程序應該返回validated_data。但是我沒有得到它......你能告訴我爲什麼我沒有得到它嗎?@Bar Brown – rakesh
這是因爲你使用django類視圖,試着用rest api [modelviewset](http://www.django- rest-framework.org/api-guide/viewsets/#modelviewset) –