Заплатка или обновление по поисковому запросу axios

У меня есть django restframework и управление с javascript axios

Я поступаю следующим образом,

  axios.get(`http://localhost:8010/api/myusers/?my_id=${my_id}`).then((res)=>{
    var id = res['data']['results'][0]['id'];
    axios.patch(`http://localhost:8010/api/myusers/${id}/`, {
        phone: 'nice phone',
    }).then((res)=>{
      console.log("patch finish");
    })
  })

Получите идентификатор по my_id и исправьте данные.

Однако мне кажется, что это немного неуклюже, в нем дважды используется запрос.

Сначала получите id с помощью my_id и измените данные с помощью id

Итак, я хотел бы сделать это по одной просьбе.

Как я могу его сделать?

Я пробовал так, но 405 Method not allowd ошибка

  axios.patch(`http://localhost:8010/api/myusers/?my_id=${my_id}`, {
    phone: 'nice phone2',
  }).then((res)=>{
    console.log("patch finish");
  })

мои настройки на сервере Я использую djangorestframework и django filter

class MyUserViewSet(viewsets.ModelViewSet):
    queryset = sm.MyUser.objects.all()
    serializer_class = sl.MyUserSerializer
    filter_backends = [DjangoFilterBackend]
    search_fields = ['my_id']
    filterset_fields = ['my_id']

class MyUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = sm.MyUser
        fields = ('my_id','phone','id','created_at')

Из кода django-rest_framework

# If you want to use object lookups other than pk, set 'lookup_field'.
# For more complex lookup requirements override `get_object()`.
lookup_field = 'pk'
lookup_url_kwarg = None

Вы можете изменить эти параметры в своем ModelViewSet (наследующем от GenericViewSet)

Таким образом, вы можете сделать один запрос непосредственно к url с 'my_id'.

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