직렬화하려는 속성 필드가 포함 된 모델을 직렬화하려고합니다.
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__"