2017-10-28 11 views
0

私は、Djangoの残りのフレームワークを実装し、怒鳴るの結果を受け取った:カスタム関連する方法結果Djangoの残りのフレームワーク

"permissions": [ 
    "name permission 1", 
    "name permission 2" 
] 

私は何をすべき:

{ 
    "count": 3, 
    "next": null, 
    "previous": null, 
    "results": [ 
     { 
      "id": 2, 
      "created_at": "2017-10-16T09:55:07.663791Z", 
      "modified_at": "2017-10-16T09:55:07.663846Z", 
      "visible": true, 
      "name": "Viewer", 
      "permissions": [ 
       2, 
       3 
      ] 
     }, 
     ... 
    ] 
} 

だから私は、フィールドの権限は次のようになりたいですか?

編集:

私は私のモデルとシリアライザのコードを追加します。

役割:

class Role(BaseModel): 
    class Meta: 
     db_table = 'role' 

    name = models.CharField(max_length=255, null=False) 
    module = models.CharField(max_length=30) 
    permissions = models.ManyToManyField(Permission, 
            related_name='role_permission', 
            through='RolePermission',) 


    def __str__(self): 
     return self.name 

がRolePermissionに:

class RolePermission(models.Model): 
    class Meta: 
     db_table = 'role_permission' 
     unique_together = (('role', 'permission'),) 

    role = models.ForeignKey(Role) 
    permission = models.ForeignKey(Permission) 

RoleSerializer

class RoleSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Role 
     fields = '__all__' 
+3

モデルとシリアライザコードを表示してください –

+0

私のコードを追加しました –

答えて

0

これを実現するためにRoleSerializerを変更し、Permissionモデルの新しいシリアライザクラスを変更することができます。

class PermissionSerializer(serializers.ModelSerializer): 
    class Meta(object): 
     model = Permission 
     fields = ('name',) 


class RoleSerializer(serializers.ModelSerializer): 
    permissions = PermissionSerializer(many=True) 

    class Meta: 
     model = Role 
     fields = '__all__' 
関連する問題