设置属性值的序列化程序方法在 post 请求中不起作用。我正在使用 Django Rest 框架
serializer method to set the value of an attribute doesn't work in a post request. I am using Django Rest Framework
我有一个模型,它有一个属性“transaction_id”,这是一个自定义的 ID 字段,必须计算它的值才能保存在数据库中。
我有一个模型:
class Transaction(models.Model):
field = models.IntegerField(default=0)
transaction_id = models.UUIDField(unique=True)
这是序列化程序:
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = Transaction
fields = '__all__'
read_only_fields = ['id', 'transaction_id']
def set_tn_number(self):
tn_number = "some_string/"
#I have to perform some calculation in order to get the relevant value
tn_number = tn_number + str(10)
return tn_number
现在,在我的 post 视图方法中,我正在执行以下操作:
def post(self, request):
serializer = TransactionSerializer(data=request.data)
if serializer.is_valid():
serializer.tn_number = serializer.set_tn_number()
serializer.save()
message = {'message': "Transaction Created Successfully"}
return Response(message, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
但我仍然收到完整性错误:
NOT NULL constraint failed: transaction_transaction.transaction_id
有人可以帮我解决这个问题吗?
感谢您的宝贵时间
更新验证数据或传递必要的模型属性以将方法保存为 kwargs。
def post(self, request):
serializer = TransactionSerializer(data=request.data)
if serializer.is_valid():
tn_number = serializer.set_tn_number()
serializer.save(transaction_id=tn_number)
message = {'message': "Transaction Created Successfully"}
return Response(message, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我有一个模型,它有一个属性“transaction_id”,这是一个自定义的 ID 字段,必须计算它的值才能保存在数据库中。
我有一个模型:
class Transaction(models.Model):
field = models.IntegerField(default=0)
transaction_id = models.UUIDField(unique=True)
这是序列化程序:
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = Transaction
fields = '__all__'
read_only_fields = ['id', 'transaction_id']
def set_tn_number(self):
tn_number = "some_string/"
#I have to perform some calculation in order to get the relevant value
tn_number = tn_number + str(10)
return tn_number
现在,在我的 post 视图方法中,我正在执行以下操作:
def post(self, request):
serializer = TransactionSerializer(data=request.data)
if serializer.is_valid():
serializer.tn_number = serializer.set_tn_number()
serializer.save()
message = {'message': "Transaction Created Successfully"}
return Response(message, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
但我仍然收到完整性错误:
NOT NULL constraint failed: transaction_transaction.transaction_id
有人可以帮我解决这个问题吗?
感谢您的宝贵时间
更新验证数据或传递必要的模型属性以将方法保存为 kwargs。
def post(self, request):
serializer = TransactionSerializer(data=request.data)
if serializer.is_valid():
tn_number = serializer.set_tn_number()
serializer.save(transaction_id=tn_number)
message = {'message': "Transaction Created Successfully"}
return Response(message, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)