Выборка экземпляров в поле 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.
В панели администратора я выбираю друзей с помощью самой панели администратора, но Как я могу использовать Ajax запросы к Django Rest API для выбора друзей, которых я добавил в раздел друзей для request.user???
tnx заранее
Как я могу использовать Ajax запросы к Django Rest API для выбора друзей, которых я добавил в раздел друзей для request.user