DRF3在m2mrelation上创建嵌套序列化程序

2024-09-28 21:51:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用户模型和一个音乐会模型。Concert模型与用户模型之间有一个m2m字段。在Concert视图中,我需要一个与Concert模型相关的用户字典列表。这就是我得到的:

型号.py

class User(AbstractBaseUser, PermissionsMixin):
    objects = UserManager()
    name = models.CharField(max_length = 255, default = "")
    date_added = models.DateField(auto_now=False, auto_now_add=True)
    email = models.EmailField(unique=True, db_index=True)
    (more but irrelevant)

class Concert(models.Model):
    name = models.CharField(max_length = 255)
    technicians = models.ManyToManyField(User)

序列化程序.py

class ConcertListSerializer(serializers.ModelSerializer):
    technicians = UserDetailSerializer(
            many=True,
            read_only=True,
            source='concert_set'
        )

    class Meta:
        model = models.Concert
        fields = [
            'name',
            'technicians',
            'id',
        ]

class UserDetailSerializer(ModelSerializer):
    class Meta:
        model = User
        fields = [
            'name',
            'email',
            'id',
        ]

我所期望的是ConcertListSerializer中的技师字段是一个字典列表,其中包含用户的姓名、电子邮件和id。为什么它不像DRF Documentation on Nested Serializers所说的那样提供这些呢


Tags: 用户namepy模型idtrue列表字典
1条回答
网友
1楼 · 发布于 2024-09-28 21:51:13

为什么要添加source如果使用与模型字段相同的序列化器字段,只需将其删除即可

class ConcertListSerializer(serializers.ModelSerializer):
    technicians = UserDetailSerializer(
            many=True,
            read_only=True,
        )

相关问题 更多 >