django-rest-framework - DRF 响应列表字段
问题描述
如何在 Django drf 中以数组格式获得响应?我是 python-drf 编程的新手。请帮助解决问题。
我只想要数组格式的 team_users,但现在它返回一个数组,每个字母用引号分隔。
{ "id": 3, "team_name": "team 3", "team_icon": "/media/icon/underground_3Dz5sfD.png", "team_users": [ "[", "'", "s", "k", "a", "r", "a", "n", "7", "1", "4", "@", "g", "m", "a", "i", "l", ".", "c", "o", "m", "'", ",", " ", "'", "s", "a", "m", "p", "l", "e", "1", "2", "3", "@", "g", "m", "a", "i", "l", ".", "c", "o", "m", "'", "]" ] },
要求的格式是:
"id": 3, "team_name": "team 3", "team_icon": "/media/icon/underground_3Dz5sfD.png", "team_users": ["first_email", "second_email"]
这是 serializers.py 中的代码
class TeamSerializer(serializers.ModelSerializer):
team_users = serializers.ListField(child=serializers.EmailField(min_length=0, max_length=100))
class Meta():
model=Team
fields = ('id','team_name', 'team_icon', 'team_users')
模型.py
class Team(models.Model):
team_name = models.CharField(max_length=255)
team_icon = models.ImageField()
team_users = models.EmailField()
在views.py
class GetTeam(APIView):
def get(self, request, *args, **kwargs):
data_list = []
teams = models.Team.objects.all()
for team in teams:
data_list.append(serializers.TeamSerializer(team).data)
return Response(data_list)
解决方案
一种可能的解决方案是使用“SerializerMethodField”
class TeamSerializer(serializers.ModelSerializer):
team_users = serializers.SerializerMethodField(read_only=True)
def get_team_users(self, obj):
return [x.email for x in obj.team_users]
还取决于您的团队用户模型,但您可以根据自己的需要进行定制。
推荐阅读
- python - 使用一个 Python 脚本关闭多个 Python 程序
- html - Bootstrap 5 下拉切换器无法正常工作
- c++ - 为什么空的虚拟基类的大小不是 1 字节?
- android - 如何在不设置 AOSP 的情况下从源代码构建 adb?
- python - python tkinter,如何获取根/笔记本/框架中的元素?
- c - 为什么在fork()之后共享全局变量?
- python - 如何仅针对少数元素评估列表的总和
- php - 如何在 PHP wordpress 中放置“拨打电话”按钮?
- sql - 如何在 SQL Server 中使用 STUFF 函数获取值
- python - 如何解决“导入'mplfinance'无法解决'”?