alır. Örnek almak için POST veya örnek almak için GET kullandığımda, o zaman tamam. Ancak bir örneği güncellemek için PATCH yöntemini kullandığımda, güncelleme yöntemi validated_data olarak boş bir dict alır. Bunun sebebi nedir? Temel olarak yanlış bir yaklaşım kullanırsam, lütfen bana doğru yolu göster. Teşekkürler!Django REST Framework. Güncelleme boş bir validated_data
class UserSerializer(serializers.ModelSerializer):
# password = serializers.CharField(write_only=True)
class Meta:
model = get_user_model()
fields = ('id', 'email', 'first_name', 'last_name', 'password',)
read_only_fields = ('is_staff', 'is_superuser', 'is_active',)
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
password = validated_data.pop('password')
user = self.Meta.model(**validated_data)
user.set_password(password)
user.is_active = True
user.save()
return user
def update(self, instance, validated_data):
print validated_data # returns {} - empty dict
return instance
Ben görünüm olarak ModelViewSet kullanın:
class UserViewSet(viewsets.ModelViewSet):
queryset = get_user_model().objects.all()
serializer_class = UserSerializer
urls.py: Ben pycharm DİNLENME Client kullanmak ve isteği parametresi olarak "first_name = Ad" göndermek test için
router = routers.DefaultRouter()
router.register(r'accounts', UserViewSet, base_name='User')
urlpatterns = [
url(r'', include(router.urls)),
]
PATCH/accounts/1/ Yukarıdaki seri hale getirici üzerindeki baskı "{}" harfini gösterir. Gerekli hesap var ve seri hale getirici hedef örneği alıyor.
Sadece sahip bazı kod ile bunu test ettik ve düzgün çalıştı. Görüşünüzü gösterir misiniz lütfen? ve belki de test? Şimdiden teşekkürler. –
Teşekkür ederim, Vladir! Bu gönderiyi views.py ve urls.py kodumla güncelledim. – user1564009