Я делаю вызов патча для REST API, он прекрасно работает, когда я вызываю это из curl или Postman
[
{
"user": {
"pk": 2,
"username": "rayees",
"email": "rayees.xxxx@xxxx.co.in",
"first_name": "Rayees",
"last_name": "xxxxx",
"contact_number": "1111"
},
"event_cost": "cost",
"schedule": [
{
"day_available": "MON",
"time_available": "Morning"
}
],
"cities": [
{
"uid": 1,
"city": "SANTA CLARA"
}
]
}
]
Но он не работает из приложения VueJS в данных FORM, например
methods: {
updateDetails() {
var formData = new FormData();
formData.set("first_name", this.userDetails.first_name);
formData.set("last_name", this.userDetails.last_name);
formData.set("contact_number", this.$refs.contact_input.value);
formData.set("email", this.$refs.email_input.value);
formData.set("event_cost", this.$refs.event_cost.value);
var schedule = [
{
"day_available": "TUE",
"time_available": "Morning"
}
]
console.log(JSON.stringify(schedule))
formData.set("event_date", JSON.stringify(schedule))
Данные не обновляются из данных формы с помощью вызова REST API с помощью метода Patch, какие-либо предложения?
Здесь проблема со значением
schedule
Похоже, что stringfy неправильно форматирует данные
JSON.stringify(schedule)
Ожидается, что Backend API
editDetails(data, token_key, username) {
return apiClient.patch(`/user/${username}/details`, data, {
headers: {
Authorization: `Token ${token_key}`,
"Content-Type": "multipart/form-data"
}
});
Вход в мой views.py - при отправке данных формы (VueJS)
2020-01-16 19:28:59,248 apis.views INFO ProfileDetails(data=<QueryDict: {'first_name': ['Rayees'], 'last_name': ['xxxx'], 'contact_number': ['1111'], 'email': ['rayees.xxxx@xxx.co.in'], 'event_cost': ['32.00'], 'bio': ['Test BIO333'], 'schedule': ['[{"day_available":"TUE","time_available":"Morning"}]']}>, instance=<Chef: rayees>):
Вход в мой views.py - при отправке json данных (почтальон)
2020-01-16 19:31:49,250 apis.views INFO ProfileDetails(data={'user': {'pk': 2, 'username': 'rayees', 'email': 'rayees.xxx@xxx.co.in', 'first_name': 'Rayees', 'last_name': 'xxx', 'contact_number': '322222', 'user_type': 'Chef', 'photo': None, 'address': 'TEsting'}, 'first_name': 'Rayees', 'last_name': 'xxxxx', 'contact_number': '11111', 'email': 'rayees.xxxx@xxx.co.in', 'photo': None, 'bio': 'Test BIO333', 'event_cost': '32.00', 'schedule': [{'day_available': 'TUE', 'time_available': 'Morning'}], 'dish_set': [], 'cities': [{'uid': 1, 'city': 'SANTA CLARA'}]}, instance=<Chef: rayees>):
Вот метод исправления с параметром из бэкэнда
def patch(self, request, *args, **kwargs):
user = User.objects.get(user__username=kwargs['username'])
serializers = ProfileDetails(data=request.data, instance=user)
self.logger.info(serializers)
if serializers.is_valid():
serializers.save()
self.logger.info("Serializer save response")
self.logger.info(serializers.data)
return Response(serializers.data, status=status.HTTP_201_CREATED)
return Response(serializers.errors, status=status.HTTP_400_BAD_REQUEST)