Вложенный результат для вложенного сериализатора в django со многими ко многим полям

у меня есть четыре модели :

  1. Модель CommonAccess, которая имеет четыре ManyToMany к AccessSubject, AccessGroup, AccessAction и AccessSubGroup
  2. .
class CommonAccess(TimeStampedModel):
    name = models.CharField(blank=True,null=True,max_length=200,)
    subjects = models.ManyToManyField(AccessSubject,)
    groups = models.ManyToManyField(AccessGroup,blank=True,)
    actions = models.ManyToManyField(AccessAction,blank=True,)
    sub_groups = models.ManyToManyField('AccessSubGroup,blank=True, )

    def __str__(self):
        return self.ename or ''
  1. Модель объекта доступа:
class AccessSubject():
    name = models.CharField(blank=True, null=True, max_length=200, unique=True,)
  1. Модель группы доступа:
class AccessGroup():
    name = models.CharField(blank=True, null=True, max_length=200, unique=True,)
    access_subject = models.ForeignKey(AccessSubject,on_delete=models.SET_NULL,related_name='access_groups')
  1. Модель AccessSubGroup:
class AccessSubGroup():
    name = models.CharField(blank=True, null=True, max_length=200, unique=True,)
    access_subject = models.ForeignKey(AccessSubject,on_delete=models.SET_NULL,)
    access_group = models.ForeignKey(AccessGroup,on_delete=models.SET_NULL,related_name='accessgroup_subgroups')

Мне нужно при передаче идентификатора commonAccess получить commonAccess с вложенными субъектом, группой и подгруппой, которые файтер с полями ManyToMany в модели CommonAccess, как :

name: 'sample'
subject: [ name: 'sub1'
           group : [ name: 'gr1'
                     sub_group: [ name: 'sgr1'
                                ]
                                [ name: 'sgr2'
                                ]
                   ]
           group : [ name: 'gr2'
                     sub_group: [name: 'sgr3']
                   ]
         ]
         [ name: 'sub2'
           group : [ name: 'gr3'
                   ]
         ]

я использовал сериализатор как показано ниже, но только субъекты фильтруются CommonAccess ManyToMany файлами, я хочу, чтобы Group и SubGroup также фильтровались CommonAccess :

class NewCommonAccessSerializer(ModelSerializer):
    subjects = NewAccessSubjectNestedSerializer(read_only=True, many=True)
    class Meta:
        model = CommonAccess
        fields = "__all__"

class NewAccessSubjectNestedSerializer(ModelSerializer):
    accesslevel_groups = NewAccessGroupNestedSerializer(many = True)  
    class Meta:
        model = AccessSubject
        fields = '__all__'

class NewAccessGroupNestedSerializer(ModelSerializer):

    class Meta:
        model = AccessGroup
        fields = '__all__' 
Вернуться на верх