如何在drf中更改多对多关系格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在drf中更改多对多关系格式相关的知识,希望对你有一定的参考价值。
这是我的序列化程序类
class ProjectSerializer(ModelSerializer):
created_by = SlugRelatedField(read_only=True, slug_field='email')
updated_by = SlugRelatedField(read_only=True, slug_field='email')
team = SlugRelatedField(many=True, read_only=True, slug_field='first_name')
class Meta:
model = Project
exclude = ['deleted_at']
这是Models.py
class Project(MandatoryFields, Model):
project_name = models.CharField(max_length=255, blank=True)
project_areas = models.CharField(max_length=255, blank=True)
team = models.ManyToManyField(
settings.AUTH_USER_MODEL, blank=True, related_name="%(app_label)s_%(class)s_team")
project_manager = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True,
related_name="%(app_label)s_%(class)s_project_manager")
start_date = models.DateField(null=True, blank=True)
end_date = models.DateField(null=True, blank=True)
REQUIRED_FIELDS = []
def __str__(self):
return self.project_name
我正在收到这样的回复
"status": true,
"data": [
"id": 1,
"created_by": "abc@google.com",
"updated_by": "abc@google.com",
"project_manager": "abc@google.com",
"team": ["Rahul",
"Anoop",
],
"created_date": "2020-01-16T05:18:58.471601Z",
"modified_date": "2020-01-16T05:18:58.471662Z",
"project_name": "ABC",
"project_areas": "ABC",
"start_date": null,
"end_date": null,
,
我的问题是团队与用户模型之间存在许多关系。我需要改变现场团队的反应。它需要以字典格式返回ID和名称。
我该如何更改
"team": [
"id": 1,
"name": "Rahul",
,
"id": 2,
"name": "Anoop",
],
答案
[Nested Serializer (TeamSerializer
)并将其连接到您的TeamSerializer
中,作为>]ProjectSerializer
from django.contrib.auth import get_user_model
class TeamSerializer(serializers.ModelSerializer):
name = serializers.CharField(source='first_name')
class Meta:
model = get_user_model()
fields = ('id', 'name')
class ProjectSerializer(ModelSerializer):
created_by = SlugRelatedField(read_only=True, slug_field='email')
updated_by = SlugRelatedField(read_only=True, slug_field='email')
team = TeamSerializer(many=True, read_only=True)
class Meta:
model = Project
exclude = ['deleted_at']
参数,该参数用于指定要提取的数据源。Update-1
使用
source
source
以上是关于如何在drf中更改多对多关系格式的主要内容,如果未能解决你的问题,请参考以下文章