Django rest framework 序列化可用的选项并标记为选中

Django rest framework 序列化可用的选项并标记为选中,django-rest-framework,Django Rest Framework,我不熟悉REST和django REST框架。我想得到可用的很多选择的列表,以及知道当前选择哪些选项的方法 我有这样的模型: class PGroup(models.Model): . permissions = models.ManyToManyField( Permission, related_name="group_permissions", help_text=_('Select permissions for this group.

我不熟悉REST和django REST框架。我想得到可用的很多选择的列表,以及知道当前选择哪些选项的方法

我有这样的模型:

class PGroup(models.Model):
    .
    permissions = models.ManyToManyField(
        Permission, related_name="group_permissions", help_text=_('Select permissions for this group.')
    )
序列化程序

class PermissionSerializer(serializers.ModelSerializer):

    class Meta:
        model = Permission
        fields = ['pk', 'name',]



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

    class Meta:
        model = PGroup
        fields = [....'permissions']
查看可浏览API,通过此设置,我获得了
泛型的“权限:[](空列表)。createAPIView
并获得了
泛型的相关“权限[…]”(非空列表)。RetrieveUpdateAliView

我想要两个API视图上可用的
权限列表
,还想知道已经为更新API视图选择了哪些权限

谁能帮忙吗。
谢谢

有两种方法可以获得选择列表

使用

从rest\u框架导入序列化程序
from.models导入权限
类PGroupSerializer(serializers.ModelSerializer):
permissions=PermissionSerializer(many=True)
所有可用权限=序列化程序。SerializerMethodField()
def获取所有可用权限(自我、obj):
return Permission.objects.all()
类元:
model=PGroup
字段=['permissions',“所有可用权限”]
或者使用,我们可以在模型上定义一个自定义方法,并使用
source
参数指示序列化程序使用它

###models.py
类PGroup(models.Model):
.
权限=models.ManyToManyField(
权限,相关的\u name=“group\u permissions”,帮助\u text=(选择此组的权限)
)
定义所有_权限(自我):
return Permission.objects.all()
###序列化程序.py
类PGroupSerializer(serializers.ModelSerializer):
permissions=PermissionSerializer(many=True)
所有可用权限=权限序列化程序(多个=真,只读=真,source=“所有权限”)
类元:
model=PGroup
字段=['permissions',“所有可用权限”]
依我看,第二种选择要好得多

注意:您可能并不总是希望发送完整的选项列表,因为当您有数百或数千个对象时,这可能会变得非常缓慢