Заплатка или обновление по поисковому запросу 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'.