[英]making hash of data in django rest framework serializers
我想在我的序列化程序中制作一些字段的 SHA256 hash 並將其設置為同一序列化程序中的另一個字段,這是我的 model:
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)
第一個用戶定義 x,y,z 和 f。 之后我需要像這樣自動生成 hash hash = x + y + z + f
我的序列化器:
class SomethingSerializers(serializers.ModelSerializer):
class Meta:
model = Something
fields = ['x', 'y', 'z', 'f', 'hash']
什么是最好的決定?
您可以添加一個 model 屬性來計算您的 hash:
class Something(models.Model):
x = models.CharField(max_length=300)
y = models.IntegerField()
z = models.IntegerField()
f = models.IntegerField()
@property
def hash(self):
return your_hashed_value
只需像這樣覆蓋 model 的保存方法:
import hashlib
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)
def save(self, *args, **kwargs):
input = self.x + str(self.y) + str(self.z) + str(self.f)
result = hashlib.sha256(input.encode())
self.hash = result.hexdigest()
super(Something, self).save(*args, **kwargs)
序列化器很好。
您可以添加一個SerializerMethodField
散列這些值:
class SomethingSerializers(serializers.ModelSerializer):
hash = serializers.SerializerMethodField()
class Meta:
model = Something
fields = ['x', 'y', 'z', 'f', 'hash']
def get_hash(self, obj):
return obj.x + obj.y + obj.z + obj.f # or your custom logic
請注意,這不會將 hash 保存在數據庫中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.