gpt4 book ai didi

python - 使用 Django Rest Framework 从模型序列化属性(getter 和 setter)的问题

转载 作者:行者123 更新时间:2023-12-04 23:15:03 26 4
gpt4 key购买 nike

我想在序列化程序中使用我模型中的属性(包括 setter),但显然,从未调用过 setter。

模型.py

class Awesome(models.Model):
_value = models.TextField()
def set_value(self, value):
self._value = value
def get_value(self):
return self._value
value = property(get_value, set_value)

序列化程序.py
class AwesomeSerializer(serializers.ModelSerializer):
class Meta:
model = Awesome
fields = ('value',)

View .py
class AwesometViewSet(viewsets.ModelViewSet):
queryset = Awesome.objects.all()
serializer_class = AwesomeSerializer

在上面建议的这种情况下,当我进行 GET 时,getter 工作正常,但是当我进行 POST 时,序列化程序不会调用 setter。

我做错了什么?!

我正在使用以下版本:
  • python == 3.6.1
  • Django == 1.11.2
  • djangorestframework == 3.6.3
  • 最佳答案

    您正在使用 ModelSerializer它根据模型上的字段自动在序列化程序上创建读写字段。当它不是字段(属性或方法)并在 Meta.fields 中声明时,它默认为只读字段。

    在序列化器上显式声明它会使它成为一个 RW 字段:

    class AwesomeSerializer(serializers.ModelSerializer):
    value = serializers.CharField()
    class Meta:
    model = Awesome
    fields = ('value',)

    关于python - 使用 Django Rest Framework 从模型序列化属性(getter 和 setter)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44703213/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com