programing tip

모델 속성을 사용하는 ModelSerializer

itbloger 2020. 10. 17. 10:03
반응형

모델 속성을 사용하는 ModelSerializer


직렬화하려는 속성 필드를 포함하는 모델을 직렬화하려고합니다.

models.py :

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    slug = models.AutoSlugField(populate_from='name')

    @property
    def ext_link(self):
        return "/".join([settings.EXT_BASE_URL, self.slug])

serializers.py :

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('name', 'ext_link')

관련 URL을 가져 오려고 할 때 ext_link속성 에서 serializer 예외 (KeyError)가 발생 합니다.

ext_link속성을 직렬화하려면 어떻게 해야합니까?


모델 필드가 아니기 때문에 serializer 클래스에 명시 적으로 추가해야합니다.

class MyModelSerializer(serializers.ModelSerializer):
    ext_link = serializers.Field()

    class Meta:
        model = MyModel
        fields = ('name', 'ext_link')

@Robert Townley의 코멘트, 버전이 작품 3.8.2:

class MyModelSerializer(serializers.ModelSerializer):
    ext_link = serializers.ReadOnlyField()

    class Meta:
        model = MyModel
        fields = "__all__"

참고 URL : https://stackoverflow.com/questions/17066074/modelserializer-using-model-property

반응형