3 回答

TA贡献1878条经验 获得超4个赞
有多种方法,我首选的第一种方法是将属性添加到模型中,并将其字段添加到序列化器中:
class Article(models.Modle):
...
@property
def summary(self):
return self.text[:200]
class ArticleSerializer(serializers.ModelSerializer):
summary = serializers.CharField()
对于第二种方法,您可以使用SerializerMethodField:
class ArticleSerializer(serializers.ModelSerializer):
summary = serializers.SerializerMethodField()
def get_summary(self, obj):
return obj.text[:200]

TA贡献1821条经验 获得超6个赞
另一种方法是创建自己的自定义字段:
class CustomCharField(serializers.CharField):
def __init__(self, repr_length, **kwargs):
self.repr_length = repr_length
super(CustomCharField, self).__init__(**kwargs)
def to_representation(self, value):
return super(CustomCharField, self).to_representation(value)[:self.repr_length]
并在序列化器中使用它:
class ArticleSerializer(serializers.ModelSerializer):
text = CustomCharField(repr_length=200)
添加回答
举报