generando hash de datos en los serializadores de Django Rest Framework
Quiero realizar un hash SHA256 de algunos campos en mi serializador y asignarlo a otro campo en el mismo serializador, este es mi modelo:
class Something(models.Model):
x = models.CharField(max_length=300)
y = models.IntegerField()
z = models.IntegerField()
f = models.IntegerField()
hash = models.CharField(max_length=300)
El usuario primero define x, y, z y f. Después de eso, necesito generar automáticamente el hash de la siguiente manera:
hash = x + y + z + f
Mi serializador:
class SomethingSerializers(serializers.ModelSerializer):
class Meta:
model = Something
fields = ['x', 'y', 'z', 'f', 'hash']
¿Cuál es la mejor decisión?
davy.ai
La mejor decisión sería anular el método
create
del serializador para calcular el hash SHA256 de los camposx
,y
,z
yf
, y luego establecer el campohash
en el valor de hash calculado. Aquí tienes un ejemplo de implementación:En esta implementación, anulamos el método
create
del serializador para extraer los valores dex
,y
,z
yf
de los datos validados. Luego concatenamos estos valores y calculamos el hash SHA256 de la cadena resultante. Finalmente, agregamos el valor de hash calculado a los datos validados y llamamos al métodocreate
de la clase de serializador padre para crear la instancia deSomething
. Esto asegura que el campohash
se establezca automáticamente en el valor correcto cuando se crea una nueva instancia deSomething
utilizando el serializador.