首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置属性值的序列化器方法在post请求中无效。我正在使用Django Rest框架

设置属性值的序列化器方法在post请求中无效。我正在使用Django Rest框架
EN

Stack Overflow用户
提问于 2021-12-13 04:56:30
回答 1查看 388关注 0票数 0

我有一个模型,它有一个属性"transaction_id“,它是一个定制的ID字段,它的值必须计算出来才能保存到数据库中。

我有个模特:

代码语言:javascript
运行
复制
class Transaction(models.Model):
     field = models.IntegerField(default=0)
     transaction_id = models.UUIDField(unique=True)

这是连载器:

代码语言:javascript
运行
复制
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方法中,我执行以下操作:

代码语言:javascript
运行
复制
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)

但我还是会犯诚信错误:

NULL约束失败: transaction_transaction.transaction_id

有人能帮我吗?

谢谢您抽时间见我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-13 05:10:38

更新已验证的数据或传递必要的模型属性,以将方法保存为kwargs。

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70330087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档