मेरे पास निम्नलिखित प्रतिक्रिया डेटा है

[
{
    "id": 7,
    "name": "Default Group",
    "permissions": [
        22,
        24
    ]
},
{
    "id": 10,
    "name": "Another Group",
    "permissions": [
        1,
        2,
        22,
        24
    ]
},
{
    "id": 11,
    "name": "New Group",
    "permissions": [
        10,
        11,
        12,
        5,
        6,
        7,
        8
    ]
}]

लेकिन मैं उस शब्दकोश को हटाना चाहता हूं जिसका आईडी = 10 प्रतिक्रिया डेटा से है, मैं यह कैसे कर सकता हूं?

मेरे पास कोड की निम्नलिखित पंक्तियां हैं ..

class GetUserGroupList(APIView):


def post(self, request, *args, **kwargs):

    groups = Group.objects.all()
    serializer = GroupSerializer(groups, many=True)

    return Response(serializer.data)

serializers.py में

class GroupSerializer(serializers.ModelSerializer):

class Meta:
    model = Group
    fields = ('id', 'name', 'permissions',)

किसी भी मदद की सराहना की जाएगी !!

0
manoj adhikari 7 जुलाई 2021, 11:14

4 जवाब

सबसे बढ़िया उत्तर

यदि आप निम्न के रूप में कुछ करते हैं तो क्या हुआ:

groups = Group.objects.all().exclude(id=10)
1
em1le 7 जुलाई 2021, 08:23

यदि आप प्रतिक्रिया से कुछ आइटम शामिल/बहिष्कृत करना चाहते हैं, तो आप इसे प्राप्त करने के लिए क्वेरीसेट फ़िल्टर कर सकते हैं। मैं आपको नीचे की तरह सामान्य एपीआई दृश्यों का उपयोग करने की सलाह देता हूं:

from rest_framework import generics


class UserGroupListView(generics.ListAPIView):
    serializer_class = GroupSerializer
    queryset = Group.objects.exclude(permissions=10)
1
Elgin Cahangirov 7 जुलाई 2021, 08:23

आपके द्वारा उल्लिखित seializers.py सामान के बारे में निश्चित नहीं है, लेकिन मैंने यह एक-लाइनर लिखा है कि काम पूरा हो जाए:

response = [i for i in response if i['id'] != 10]

मूल रूप से, यह सूची response के माध्यम से पुनरावृति करता है, एक नई सूची बनाता है जिसे response भी कहा जाता है, सिवाय नई सूची में १० के id के साथ कोई भी निर्देश नहीं है

0
Andrew 7 जुलाई 2021, 08:23

वास्तव में मेरे पास पहले जैसा समाधान था, लेकिन उत्तर में अन्य बेहतर तरीके भी हैं

 groups = Group.objects.all()
    serializer = GroupSerializer(groups, many=True)

    data_is = list(serializer.data)
    print(type(data_is))
    for item in data_is[:]:
        if item['id'] == 10:
            data_is.remove(item)
    print(data_is)

    return Response(data_is)
0
manoj adhikari 7 जुलाई 2021, 08:33