DRF The submitted восходит was not в file. Check the encoding type on the form - ImageField

У меня есть следующая модель Усер:

class User(AbstractBaseUser, PermissionsMixin):
#... other attributes  
    photo = models.ImageField(upload_to='avatars', blank=True)

Основной serialización, который я реализовал этой модели:

class UserSerializer(serializers.ModelSerializer):
    team = serializers.StringRelatedField()

    def setup_eager_loading(queryset):
      queryset = queryset.select_related('team',)

    class Meta:
        model = User
        fields = ('url', 'username','password','first_name','last_name',
        'photo','team','position','last_login',)

Поле team это чужеземный ключ в модели Усер, который последовательно преобразован, чтобы оптимизировать Ваш результат в консультациях в базу данных, когда есть связи, с методом setup_eager_loading function.

Функция viewset модели User он:

from rest_framework import viewsets
from rest_framework import filters

from .models import User
from .serializers import UserSerializer

# Viewsets define the behavior of the view
class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    filter_fields = ('username','is_player', 'first_name','last_name','team','email',)

Когда я иду в инстанцию пользователя в моем последовательно преобразованном api путь Джанго Рест Фрамеворк, и хочу обновить какую-то (любую) информацию об этой инстанции через данные json чистые (json raw средняя дата type: application/json) я получаю это сообщение:

introducir la descripción de la imagen aquí

Как я могу манипулировать на уровне CRUD объектами User последовательно преобразованные в моем api через данные json чистые в Джанго Рест Фрамеворк без того, чтобы у него были ошибки кодирования?

0
задан 29.10.2016, 03:12
1 ответ

Это происходит, потому что он надеется, что ты посылаешь ему файл для поля photo, если ты сделаешь одну ediciГіn с API browsable, эта envГ - в POST и это решено "заменяя" всю стоимость модели теми, которых ты посылаешь и как ты посылаешь application/json вместо multipart, бросает ошибку pudo декодировать это поле файла.

, Если бы ты сделал ее peticiГіn с AJAX, cURL, и т.д... podrГ-схвати посылать PATCH и таким образом обновлять частично и служащая без проблемы.

я рекомендую Тебе использовать Postman , чтобы сделать просьбы, так как API Browsable DRF остается коротким.

типов Привета. Я надеюсь помочь тебе.

ИЗДАЛ:

, Как реализация просьбы используя jQuery AJAX:

var username = 'mauricio';
$.ajax({
   url: '/api/users/'+username+'/',
   method: 'PATCH', 
   data : {
      first_name: 'Mauricio Alberto'
   },
   success: function(response){
     console.log(response);
   },
   error: function(response){
     console.warn(response);
   }
});

В этом примере становится отвечающим современным требованиям частично используя PATCH, а именно, одинокий изменяется поле first_name.

1
ответ дан 24.11.2019, 12:51
  • 1
    Гениальный то, что ты говоришь о Postman, смотреть это и # 233; в детали tambi и # 233; n. Но злоупотребляя немного, и #191; у тебя есть какой-то gu и # 237; в на, поскольку я могу искать, чтобы делать этот petici и # 243; n с AJAX или обновлять частично путь application/json? – bgarcial 29.10.2016, 18:29
  • 2
    Actualiz и # 233; ответ. – Genesis Guerrero Martinez 30.10.2016, 03:43

Теги

Похожие вопросы