gpt4 book ai didi

python - 如何在序列化字段时获取字符串切片(Django/DRF)

转载 作者:行者123 更新时间:2023-12-01 09:08:46 25 4
gpt4 key购买 nike

第一次在这里提问,我会尽力听起来很聪明!因此,我有一个名为“Article”的模型,并且在其“文本”字段中填充了 1000 多个字符的文本。当我通过端点发送“文章”序列化对象时,如何才能只发送“文本”字段的前 200 个字符?

View .py

class ArticleScrape(generics.ListAPIView):                                                                                                                                                                          
queryset = Article.objects.all()
serializer_class = ArticleSerializer

def list(self,request):
serializer = ArticleSerializer(queryset, many=True)
return Response(serializer.data)

序列化器.py

class ArticleSerializer(serializers.ModelSerializer):                                                                                                                                                               
authors = EachAuthorSerializer(many=True,read_only=True)
tags = EachTagSerializer(many=True,read_only=True)
text = serializers.CharField(max_length=200)
class Meta:
model = Article
exclude=('id',)

我需要在查询集中执行此操作吗?在序列化器中?我要注释字段吗?我已经尝试了很多这样的方法但没有成功。预先感谢您的帮助!

最佳答案

有不同的方法,我更喜欢的第一个方法是向模型添加属性并将其字段添加到序列化器:

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]

关于python - 如何在序列化字段时获取字符串切片(Django/DRF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830687/

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