Sto utilizzando il Django REST Framework (DRF) per creare un endpoint con cui posso registrare nuovi utenti. Tuttavia, quando raggiungo l'endpoint di creazione con un POST, il nuovo utente viene salvato tramite un serializzatore, ma la password viene salvata in chiaro nel database. Il codice per la mia serializer è la seguente:Perché la password del mio modello utente Django non è stata eseguita?
from django.contrib.auth import get_user_model
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ['password', 'username', 'first_name', 'last_name', 'email']
read_only_fields = ['is_staff', 'is_superuser']
write_only_fields = ['password']
Si prega di notare che io sto usando il modello utente predefinito dal pacchetto auth Django, e che io sono molto nuovo a lavorare con DRF! Inoltre, ho trovato this question che fornisce una soluzione, ma questo sembra richiedere due interazioni di database - non credo che questo sia efficiente, ma potrebbe essere un'ipotesi errata da parte mia.
Ecco un'altra soluzione che sovrascrive 'perform_create' e' perform_update': http://stackoverflow.com/questions/27468552/changing-serializer-fields-on-the-fly/#answer-27471503 –