繁体   English   中英

django,在保存到数据库之前更改模型中的字段值

[英]django, Changing field values ​in model before saving to database

类 PlayerList(models.Model):

name = models.CharField(max_length=300)
position = models.CharField(max_length=200)
h_code = models.ForeignKey(HList, related_name="h_code", on_delete=models.CASCADE)
d_code = models.CharField(primary_key=True, max_length = 200, editable=False)

序列化器.py

class PlayerSerializer(serializers.ModelSerializer):    
    class Meta:
        fields = ["name", "position", "h_code", "d_code"]
        model = PlayerList

查看.py

class PostPlayer(generics.ListCreateAPIView):
    queryset = PlayerList.objects.all().order_by('-d_code')
    serializer_class = PlayerListSerializer

    def get(self, request, *args, **kwargs):
        d_code = request.data.get('h_code') + 'test'
        print(d_code)

打印(d_code):

h000001test

通过api输入一个值时,我想实现将输入的值改为view.py中的另一个值并保存在db中。

我想将 def get 处理的 d_code 保存在 db 中。

我不知道该怎么办。 你能告诉我吗?

没有答案,所以我会再次发布。

您可以覆盖您的视图perform_create()方法,如文档中所述(您可能需要滚动一点,它在保存和删除挂钩部分:

class PostPlayer(generics.ListCreateAPIView):
    queryset = PlayerList.objects.all().order_by('-d_code')
    serializer_class = PlayerListSerializer

    def get(self, request, *args, **kwargs):
        d_code = request.data.get('h_code') + 'test'
        print(d_code)
    ...
    ...
    def perform_create(self, serializer):
        d_code = request.data.get('h_code') + 'test'
        #do something with d_code
        new_code = d_code + 'someSampleValue'
        serializer.save(d_code=new_code)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM