Выборка экземпляров в поле manaytomany с помощью django rest

Я пытаюсь создать систему добавления друзей с помощью Django Rest. И вот мои коды

#models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    pic = models.ImageField(upload_to="img", blank=True, null=True)
    friends = models.ManyToManyField('Friend', related_name = "my_friends" , blank=True , null=True)
    
    def __str__(self):
        return self.user.username

class Friend(models.Model):
    profile = models.OneToOneField(Profile, on_delete=models.CASCADE)
    
    def __str__(self):
        return self.profile.user.username
#serializers.py

class FriendSerializer(serializers.ModelSerializer):
    class Meta:
        model = Friend
        fields = ('profile',)

class ProfileSerializer(serializers.ModelSerializer):
    friend = FriendSerializer(many=True, read_only=False)
    class Meta:
        model = Profile
        depth = 3 #this is return foreinkey name instead of id
        fields = "__all__"
        
        
    def update(self, instance, validated_data):
        friends_data = validated_data.pop('friend')
        instance = super(ProfileSerializer, self).update(instance, validated_data)

        for friend_data in friends_data:
            friend_qs = Friend.objects.filter(profile = friend_data['profile'])

            if friend_qs.exists():
                friend = friend_qs.first()
            else:
                friend = Friend.objects.create(**friend_data)

            instance.friend.add(friend)

        return instance
#views.py

class UserProfile(RetrieveUpdateDestroyAPIView):
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializer

class UserFriends(RetrieveUpdateDestroyAPIView):
    queryset = Friend.objects.all()
    serializer_class = FriendSerializer
#urls.py

urlpatterns = [
    path('' , ArticleList.as_view() , name = 'list'), #we used as_view() cause we used class based views 
    path('<int:pk>' , ArticleDetail.as_view() , name = 'detail'), 
    path('users/' , UserList.as_view() , name = 'user-list'), 
    path('users/<int:pk>' , UserDetail.as_view() , name = 'user-detail'),
    path('profile/<int:pk>' , UserProfile.as_view() , name = 'user-profile'),    
]

Мое намерение состоит в том, чтобы отправить json следующим образом ->

{"id": 1,

 "friend": \[ {"profile":7} \],

 "name": "pc",

 "pic": null 

}

(в приведенном выше json, id:1 представляет request.user и profile:7 указывает на того же человека, который будет добавлен в список друзей)

на этот url -> http://127.0.0.1:8000/api/profile/91

и обновить раздел друзей в нужном профиле...

Цифра 1 в URL указывает на профиль администратора, который будет обновлен...

Когда я отправляю json на url, человек будет правильно добавлен в раздел друзей нужного профиля Но проблема в том, что он отключен...

В сыром Django я могу предоставить шаблон пользователю и там он может выбрать друзей

Но я хочу использовать этот бэкенд в Electron JS, и у меня нет возможности использовать шаблоны Django, и я должен сделать это только с помощью Django REST и Ajax.

enter image description here

В панели администратора я выбираю друзей с помощью самой панели администратора, но Как я могу использовать Ajax запросы к Django Rest API для выбора друзей, которых я добавил в раздел друзей для request.user???

tnx заранее

Как я могу использовать Ajax запросы к Django Rest API для выбора друзей, которых я добавил в раздел друзей для request.user

Вернуться на верх